将所有Maven依赖项添加到Arquillian [英] Adding all Maven dependencies to 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 $ c测试$ C>。在文档上查看最新版本的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屋!