How to configure the order of the jars in Maven for TestNG
fenixx Apr 1, 2009 3:28 AMHi all,
according to this link http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.3.0.cp03_fp01/html/Seam_Reference_Guide/migration.embedded.html you have to guarantee that the jars for the test of the Embedded JBoss should be declared above any other libraries in the test classpath.
Therefore my question:
Is it a way to configure the order of the jars in Maven?
I tried to configure my pom.xml as follows:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <configuration> <ejbVersion>3.0</ejbVersion> <generateClient>true</generateClient> <archive> <manifest> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> <manifestEntries> <Class-Path>lib/myproject-server.jar</Class-Path> </manifestEntries> </archive> </configuration> </plugin> <!-- Surefire--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.3</version> <configuration> <childDelegation>true</childDelegation> <useSystemClassLoader>false</useSystemClassLoader> <environmentVariables> <KM_ENV>test</KM_ENV> </environmentVariables> <skipTests>false</skipTests> <testFailureIgnore>true</testFailureIgnore> <additionalClasspathElements> <!-- Place of the bootstrap--> <additionalClasspathElement>${myproject.home}/myproject-ejb/src/test/bootstrap</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-embedded-all.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/thirdparty-all.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-embedded-api.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-deployers-client-spi.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-deployers-core-spi.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-seam.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jboss-el.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/activation.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/el-api.jar</additionalClasspathElement> <additionalClasspathElement>${myproject.home}/myproject-ejb/lib/jsf-api.jar</additionalClasspathElement> </additionalClasspathElements> <argLine>-Dsun.lang.ClassLoader.allowArraySyntax=true</argLine> <useSystemClassLoader>false</useSystemClassLoader> </configuration> <executions> <execution> <id>surefire-it</id> <phase>integration-test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> <!-- ==================== --> </plugins> <!-- TESTNG--> <testResources> <testResource> <directory>src/test/bootstrap</directory> </testResource> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> </build> <dependencies> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>jboss-embedded-all</artifactId> <version>beta3.SP4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>hibernate-all</artifactId> <version>beta3.SP4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>thirdparty-all</artifactId> <version>beta3.SP4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>jboss-embedded-api</artifactId> <version>beta3.SP4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.microcontainer</groupId> <artifactId>jboss-deployers-client-spi</artifactId> <version>2.0.0.Beta6</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.microcontainer</groupId> <artifactId>jboss-deployers-core-spi</artifactId> <version>2.0.0.Beta6</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.gfi.library</groupId> <artifactId>authenticator</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>javax.ejb</groupId> <artifactId>ejb-api</artifactId> <version>3.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>1.2_09-BETA1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.seam</groupId> <artifactId>jboss-seam</artifactId> <version>2.1.1.GA</version> <scope>provided</scope> </dependency> <!-- TEST NG --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>5.7</version> <scope>test</scope> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.el</groupId> <artifactId>jboss-el</artifactId> <version>2.0.1.GA</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.0.2</version> <scope>provided</scope> </dependency> </dependencies> </project>
But if I want to execute the test with "Run As -> Maven test" my Test-Classpath is built-on as follows:
[DEBUG] Test Classpath : [DEBUG] C:\Projekte\My_Project\main\Sourcen_maven\myproject-ejb\target\test-classes [DEBUG] C:\Projekte\My_Project\main\Sourcen_maven\myproject-ejb\target\classes [DEBUG] c:\Projekte\javalibs\MavenRepository\junit\junit\4.0\junit-4.0.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\log4j\log4j\1.2.14\log4j-1.2.14.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\seam\embedded\jboss-embedded-all\beta3.SP4\jboss-embedded-all-beta3.SP4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\seam\embedded\jboss-embedded-api\beta3.SP4\jboss-embedded-api-beta3.SP4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\microcontainer\jboss-deployers-client-spi\2.0.0.Beta6\jboss-deployers-client-spi-2.0.0.Beta6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\microcontainer\jboss-deployers-core-spi\2.0.0.Beta6\jboss-deployers-core-spi-2.0.0.Beta6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\seam\embedded\hibernate-all\beta3.SP4\hibernate-all-beta3.SP4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\seam\embedded\thirdparty-all\beta3.SP4\thirdparty-all-beta3.SP4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\jboss-common-core\2.2.1.GA\jboss-common-core-2.2.1.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\apache-xerces\xml-apis\2.7.1\xml-apis-2.7.1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\apache-httpclient\commons-httpclient\2.0.2\commons-httpclient-2.0.2.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\apache-slide\webdavlib\2.0\webdavlib-2.0.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\jboss\jboss-common-logging-spi\2.0.4.GA\jboss-common-logging-spi-2.0.4.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\microcontainer\jboss-managed\2.0.0.Beta6\jboss-managed-2.0.0.Beta6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\aop\jboss-aop\2.0.0.beta1\jboss-aop-2.0.0.beta1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\ant\ant\1.6.5\ant-1.6.5.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\javassist\3.6.0.GA\javassist-3.6.0.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\qdox\qdox\1.6\qdox-1.6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\trove\trove\2.1.1\trove-2.1.1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\microcontainer\jboss-container\2.0.0.Beta6\jboss-container-2.0.0.Beta6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\jbossxb\2.0.0.CR4\jbossxb-2.0.0.CR4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\apache-xerces\xercesImpl\2.7.1\xercesImpl-2.7.1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\wutka-dtdparser\dtdparser121\1.2.1\dtdparser121-1.2.1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\javax\activation\activation\1.0.2\activation-1.0.2.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\jboss\jboss-logging-spi\2.0.3.GA\jboss-logging-spi-2.0.3.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\microcontainer\jboss-metatype\2.0.0.Beta6\jboss-metatype-2.0.0.Beta6.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\com\cryptix\cryptix32\3.2.0\cryptix32-3.2.0.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\apache\axis\axis\1.4\axis-1.4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\apache\axis\axis-jaxrpc\1.4\axis-jaxrpc-1.4.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\javax\ejb\ejb-api\3.0\ejb-api-3.0.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\javax\faces\jsf-api\1.2_09-BETA1\jsf-api-1.2_09-BETA1.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\seam\jboss-seam\2.1.1.GA\jboss-seam-2.1.1.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\jboss\el\jboss-el\2.0.1.GA\jboss-el-2.0.1.GA.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\javax\el\el-api\1.0\el-api-1.0.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\org\testng\testng\5.7\testng-5.7-jdk15.jar [DEBUG] c:\Projekte\javalibs\MavenRepository\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/conf/bootstrap-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/conf/jbossjta-properties.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/conf/jboss-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/conf/login-config.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/connection-factories-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/destinations-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/hsqldb-persistence-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/jms-ds.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/legacy-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/messaging-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/messaging/remoting-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/ejb3-interceptors-aop.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/hsqldb-ds.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/jboss-local-jdbc.rar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/jboss-xa-jdbc.rar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deploy/remoting-service.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/aspect-deployer-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/ejb3-deployers-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/jboss-aspect-library-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/jca-deployers-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/metadata-beans.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/META-INF/persistence.properties [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/jndi.properties [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/META-INF/commons-logging.properties [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/log4j.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/src/test/bootstrap/deployers/resources/META-INF/persistence.xml [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-embedded-all.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/thirdparty-all.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-embedded-api.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-deployers-client-spi.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-deployers-core-spi.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-seam.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jboss-el.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/activation.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/el-api.jar [DEBUG] C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/lib/jsf-api.jar
As you see: Nearly the full local repository is loaded in my test classpath.
Additionally I get this error:
org.jboss.deployers.spi.DeploymentException: Unable to find deployDir from url: file:/C:/Projekte/My_Project/main/Sourcen_maven/myproject-ejb/target/test-classes/deploy/ at org.jboss.embedded.DeploymentGroup.getDeployerDirUrls(DeploymentGroup.java:550) at org.jboss.embedded.DeploymentGroup.getDeployerDirUrlsFromResource(DeploymentGroup.java:536) at org.jboss.embedded.DeploymentGroup.addDirectoryByResource(DeploymentGroup.java:465)
Here is my Test-Code:
public class MyTest extends SeamTest { @Test public void sayHello() { assert true; } }
I don't know what is wrong. The test is running correctly with the TestNG-Plugin.
Can you give me a hint or something?
Regards
Fenixx