1 Reply Latest reply on Apr 1, 2009 4:03 AM by fenixx

    How to configure the order of the jars in Maven for TestNG

      Hi 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

        • 1. Re: How to configure the order of the jars in Maven for Test

          Btw the following code in MyTest.java does not solve this problem:

          @BeforeClass
           public void init()
           {
           org.jboss.net.protocol.URLStreamHandlerFactory factory = new org.jboss.net.protocol.URLStreamHandlerFactory();
           URL.setURLStreamHandlerFactory(factory);
           try
           {
           Bootstrap.getInstance().bootstrap();
           }
           catch (DeploymentException e)
           {
           e.printStackTrace();
           }
           super.setupClass();
           }


          Any help appreciated.

          Regards
          Fenixx