[
https://issues.jboss.org/browse/JBIDE-16696?page=com.atlassian.jira.plugi...
]
Snjezana Peco commented on JBIDE-16696:
---------------------------------------
When I have tried to fix this jira, I have faced the following two issues:
1) Maven aether calls System.getenv() when resolving dependencies which causes calling an
OS command ("cmd.exe /c set" on Windows).
We would have to allow running OS commands within ArquillianSecurityManager if we want to
fix such a problem. In my opinion, that isn't a big issue (the ant security manager
also allows running OS commands).
This behaviour could be controlled using an Eclipse preference.
2) Arquillian searches for the entered file name (loadPomFromFile("pom.xml")) in
the current working directory. The working directory is usually set to the project's
directory so the test will work. However, in Eclipse, the current working directory is set
when starting Eclipse and usually is not set to a project. I don't know how to change
the current working directory on a reliable way in Java
(
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688). Creating a new JVM
instance would significantly decrease performance and adding a JNI library could cause
unexpected issues in other Eclipse threads.
A solution: adding a new warning marker if a user uses the loadPomFromFile method. It
would recommend him the loadPomFromClassLoaderResource method instead of the
loadPomFromFile method. I think using the loadPomFromClassLoaderResource is, anyway, more
correct because a test wouldn't need to depend on the current working directory.
WDYT?
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