Luc*_*uke 23 java java-ee maven jboss-arquillian
如何将POM中的所有依赖项添加到arquillian?
Maven.resolver().loadPomFromFile("pom.xml").importRuntimeDependencies()
.as(File.class);
Run Code Online (Sandbox Code Playgroud)
我找到了那条线,但我Maven在intellij中是红色的,因为它找不到这个类.我不知道我需要哪些依赖项.还是有更好的方法?
cas*_*lin 32
将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>
Run Code Online (Sandbox Code Playgroud)
将ShrinkWrap解析器(Maven实现)添加到您的pom.xml:
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是JUnit,请将Arquillian JUnit容器添加到pom.xml:
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在测试类中,在使用注释的方法中@Deployment,使用以下行导入运行时依赖项:
File[] files = Maven.resolver().loadPomFromFile("pom.xml")
.importRuntimeDependencies().resolve().withTransitivity().asFile();
Run Code Online (Sandbox Code Playgroud)
并使用以下方法将依赖项添加到部署中addAsLibraries(files):
WebArchive war = ShrinkWrap.create(WebArchive.class)
.addClass(MyClass1.class)
.addClass(MyClass2.class)
.addClass(MyClass3.class)
.addAsLibraries(files);
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
注1:上述解决方案已经过Arquillian测试1.1.8.Final.检查文档中最新版本的Arquillian工件.
注意2:有关如何解决依赖关系的更多详细信息,请查看ShrinkWrap Resolvers文档.
我和你有同样的错误.这是因为收缩包装版本不正确.请参阅第二段代码中的正确版本.
package alehro.testgf2;
import java.io.File;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import alehro.p1.C1;
import alehro.p1.C2;
@RunWith(Arquillian.class)
public class Test1 {
@Deployment
public static Archive<?> createTestArchive() {
File[] libs = Maven.resolver().loadPomFromFile("pom.xml").importRuntimeAndTestDependencies().asFile();
WebArchive res = ShrinkWrap.create(WebArchive.class, "test.war");
for(File file : libs){
res.addAsLibrary(file);
}
res.addPackages(true, "alehro.p1");
return res;
}
@Test
public void test1(){
//third party lib
DateTimeFormatter inputDF = DateTimeFormat.forPattern("d MMM yyyy HH:mm:ss Z");
DateTime dt1 = inputDF.parseDateTime("28 Nov 2012 23:23:23 +04");
Assert.assertNotNull(dt1);
//all classes from alehro.p1
Assert.assertEquals("Failure", "I'm C1", C1.getMyName()) ;
Assert.assertEquals("Failure", "I'm C2", C2.getMyName()) ;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个严酷的时间解决maven依赖.下面是工作解决方案,但我相信它可以更简化.
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-glassfish-remote-3.1</artifactId>
<scope>test</scope>
<version>1.0.0.CR3</version>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-api</artifactId>
<version>2.0.0-alpha-5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<version>2.0.0-alpha-5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-api-maven</artifactId>
<version>2.0.0-alpha-5</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>2.0.0-alpha-5</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.0.3.Final</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
最初的想法是从这里:如何将Maven工件添加到我的ShrinkWrap档案中?
这篇dzone文章使用ShrinkWrap Maven Resolver进行Arquillian测试,这可能很有用.它表明:
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当你不知道它在哪个工件时,你可以找到一个类的另一种方法是使用search.maven.org.这是搜索您正在寻找的课程:
它显示包含该类的工件.但是,该类位于API jar中,您还需要上面提到的实现jar以及前面提到的文章.
| 归档时间: |
|
| 查看次数: |
31565 次 |
| 最近记录: |