Adding all Maven dependencies to Arquillian

前端 未结 4 1578
挽巷
挽巷 2020-12-13 03:20

How do you add all dependencies in the POM to arquillian?

Maven.resolver().loadPomFromFile(\"pom.xml\").importRuntimeDependencies()
                .as(File.         


        
4条回答
  •  眼角桃花
    2020-12-13 03:51

    Adding Arquillian dependencies

    Add Arquillian dependencies to your pom.xml:

    
        
            
                org.jboss.arquillian
                arquillian-bom
                1.1.8.Final
                import
                pom
            
        
    
    

    Add the ShrinkWrap resolver (Maven implementation) to your pom.xml:

    
        org.jboss.shrinkwrap.resolver
        shrinkwrap-resolver-impl-maven
        test
    
    

    If you are using JUnit, add the Arquillian JUnit container to your pom.xml:

    
        org.jboss.arquillian.junit
        arquillian-junit-container
        test
    
    

    Importing Maven dependencies

    In your test class, within the method annotated with @Deployment, import the runtime dependencies with the following line:

    File[] files = Maven.resolver().loadPomFromFile("pom.xml")
            .importRuntimeDependencies().resolve().withTransitivity().asFile();
    

    And add the dependencies to your deploy using the method addAsLibraries(files):

    WebArchive war = ShrinkWrap.create(WebArchive.class)
                               .addClass(MyClass1.class)
                               .addClass(MyClass2.class)
                               .addClass(MyClass3.class)
                               .addAsLibraries(files);
    

    This is how your test class will look like if you are using JUnit

    import org.jboss.arquillian.container.test.api.Deployment;
    import org.jboss.arquillian.junit.Arquillian;
    import org.jboss.shrinkwrap.api.ShrinkWrap;
    import org.jboss.shrinkwrap.api.asset.EmptyAsset;
    import org.jboss.shrinkwrap.api.spec.WebArchive;
    import org.jboss.shrinkwrap.resolver.api.maven.Maven;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import static org.junit.Assert.*;
    import java.io.File;
    
    @RunWith(Arquillian.class)
    public class MyTestClassWithMavenDependencies {
    
        @Deployment
        public static WebArchive createDeployment() {
    
            // Import Maven runtime dependencies
            File[] files = Maven.resolver()
                                .loadPomFromFile("pom.xml")
                                .importRuntimeDependencies()
                                .resolve()
                                .withTransitivity()
                                .asFile();
    
            // Create deploy file    
            WebArchive war = ShrinkWrap.create(WebArchive.class)
                                       .addClass(MyClass1.class)
                                       .addClass(MyClass2.class)
                                       .addClass(MyClass3.class)
                                       .addAsLibraries(files);
    
            // Show the deploy structure
            System.out.println(war.toString(true)); 
    
            return war;
        }
    
        // Create your tests here
    }
    

    Note 1: The above solution has been tested with Arquillian 1.1.8.Final. Check the most recent version of Arquillian artifacts on the documentation.

    Note 2: For more details on how to resolve dependencies, have a look at the ShrinkWrap Resolvers documentation.

提交回复
热议问题