[
https://issues.jboss.org/browse/JBIDE-16696?page=com.atlassian.jira.plugi...
]
Snjezana Peco commented on JBIDE-16696:
---------------------------------------
{quote}
The problem with using loadPomFromClassLoaderResource is that the projects pom is not on
the classpath. So the user would have to duplicate/copy his pom.xml file to
src/test/resources or similar, which goes against the point of Resolver.
{quote}
I understand, but this way a test has to be run from the root of its project.
The issue can be reproduced in Eclipse. Please see
http://screencast.com/t/jQka9WXD5
{quote}
there is no way to tell arquillian to use another dir than current working direcotry ?
{quote}
Maybe ShrinkWrap Resolver could search relative paths using a system property
(arquillian.project.home, for instance).
{quote}
I'm not follow your problem reasoning here.. How is the "current working
directory" related to "finding multiple versions of the same class on
classpath" as the Exception seem to indicate?
{quote}
{quote}
And yes, same questions as Aslak - how does this issue relate to currentworking dir?
{quote}
They aren't related. After fixing the described issue, I have faced the two new issues
mentioned in my previous comment.
Please see the screencast.
BTW
The "java.lang.IllegalStateException: There is more then a one service for
serviceClass" error happens when ShrinkWrap Resolver doesn't find a service class
or finds more than one service class.
SpiServiceLoader.onlyOne() (lines 87-89)
{quote}
if (services.size() != 1) {
throw new IllegalStateException("There is more then a one service for
serviceClass " + serviceClass.getName());
}
{quote}
The issue in the Arquillian Eclipse happens because it doesn't find any service
classes. I have fixed it in my local tree.
IllegalStateException when Arquillian deployment uses Maven resolver
--------------------------------------------------------------------
Key: JBIDE-16696
URL:
https://issues.jboss.org/browse/JBIDE-16696
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: testing-tools
Affects Versions: 4.1.1.Final
Reporter: Rich DiCroce
Assignee: Snjezana Peco
In an Arquillian test class, if the @Deployment method uses the ShrinkWrap Maven Resolver
API, the method will be marked with the following warning and the Arquillian Cruiser view
does not show the deployment:
{noformat}
java.lang.IllegalStateException: There is more then a one service for serviceClass
org.jboss.shrinkwrap.resolver.api.maven.MavenResolverSystem(project=arquillian-bug-test)
{noformat}
There is no stack trace to indicate how the problem might be happening. At first, I
thought this might be a ShrinkWrap bug, but this exception doesn't occur when I
actually run the test. Eclipse shows only one implementation of MavenResolverSystem on the
classpath.
Example test class to reproduce the problem:
{code}
package test;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class ARQJBTBugTest {
@Test
public void test() {
}
@Deployment
public static Archive<?> createDeployment() {
return ShrinkWrap.create(WebArchive.class)
.addAsLibraries(Maven.resolver()
.loadPomFromFile("pom.xml")
.importRuntimeDependencies()
.resolve()
.withTransitivity()
.asFile());
}
}
{code}
And the POM to go with it:
{code:xml}
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lapis.throwaway</groupId>
<artifactId>arquillian-bug-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<version.arquillian_core>1.1.3.Final</version.arquillian_core>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven-archive</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>${version.arquillian_core}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
</plugin>
</plugins>
</build>
</project>
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira