将所有Maven依赖项添加到Arquillian [英] Adding all Maven dependencies to Arquillian

查看:751
本文介绍了将所有Maven依赖项添加到Arquillian的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将POM中的所有依赖项添加到arquillian?

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

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

我发现该行,但我 Maven 在intellij中是红色的,因为它找不到类。我不知道我需要哪些依赖项。或者有更好的方法吗?

I found that line, but I Maven is red in intellij because it doesn't find the class. I don't know which dependencies I need. Or are there better ways?

推荐答案

添加Arquillian依赖项



添加Arquillian依赖于 pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>1.1.8.Final</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

将ShrinkWrap解析器(Maven实现)添加到 pom.xml

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

<dependency>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
    <scope>test</scope>
</dependency>

如果您使用的是JUnit,请将Arquillian JUnit容器添加到 pom中。 xml

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

<dependency>
    <groupId>org.jboss.arquillian.junit</groupId>
    <artifactId>arquillian-junit-container</artifactId>
    <scope>test</scope>
</dependency>



导入Maven依赖项



在测试中class,在使用 @Deployment 注释的方法中,使用以下行导入运行时依赖项:

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();

使用 addAsLibraries(files)<方法将依赖项添加到部署中/ code>:

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);



如果您使用的是JUnit,这就是您的测试类的样子



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
}






注1:上述解决方案已经过Arquillian 1.1.8.Final 。在文档上查看最新版本的Arquillian工件。


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.

注2:有关如何解决依赖关系的更多详细信息,请查看 ShrinkWrap Resolvers文档

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

这篇关于将所有Maven依赖项添加到Arquillian的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆