从EAR

时间:2016-01-04 08:21:15

标签: java jboss-arquillian shrinkwrap

我有一个带有EAR的多模块Maven项目和一个集成测试项目。现在我希望我的测试针对一些类似于EAR的存档运行。

当然,我的第一个直截了当的做法就是这样:

@Deployment
public static EnterpriseArchive createDeployment() {
    return ShrinkWrap.createFromZipFile(EnterpriseArchive.class,
            "../org.acme.project.ear/target/org.acme.project.ear-1.0.0.ear");
}

我弄清楚自己的想法有多糟糕(对于一个,我每次开始测试时都需要构建EAR,而且代码中的版本号也不好)。

经过几周的工作后,我终于想到了这样的事情:

@Deployment
public static Archive<?> createDeployment() {
    EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "org.acme.project.ear");
    ear.addAsModules(Maven.resolver().loadPomFromFile("../org.acme.project.ear/pom.xml")
            .importRuntimeDependencies().resolve().withTransitivity().asFile());
    return ear;
}

......什么时候开始似乎根本没有结束。

填写整个日志
    Jan 04, 2016 9:05:36 AM org.jboss.shrinkwrap.resolver.impl.maven.logging.LogTransferListener transferFailed
    WARNING: Failed downloading org.acme.foo/org.acme.foo/maven-metadata.xml from http://repo1.maven.org/maven2/. Reason: 
    org.eclipse.aether.transfer.MetadataNotFoundException: Could not find metadata org.acme.foo:org.acme.foo/maven-metadata.xml in central (http://repo1.maven.org/maven2)
    Jan 04, 2016 9:05:37 AM org.jboss.shrinkwrap.resolver.impl.maven.logging.LogTransferListener transferFailed
    WARNING: Failed downloading org.acme.foo/org.acme.foo/maven-metadata.xml from http://repo.maven.apache.org/maven2/. Reason: 
    org.eclipse.aether.transfer.MetadataNotFoundException: Could not find metadata org.acme.bar:org.acme.foo/maven-metadata.xml in central (http://repo.maven.apache.org/maven2)

如果他在多个存储库中搜索我们公司的文物,他就永远不会带来结果,这并不奇怪。

沿着这条线的某个地方,我想也许有助于逐个添加工件

ear.addAsModules(Maven.resolver().resolve("org.acme.foo:org.acme.foo.ejb:ejb:2.0.0").withTransitivity().as(JavaArchive.class)); 

但是这会导致相同的错误消息(虽然不常见),这样我需要第二次定义版本,这不是我想要的。

我找到了一个a bug(这是一个愚人节的笑话,它必须是这样),但它并没有帮助我找到我应该做的不同的事情让它发挥作用。

如果我已经有一个Maven EAR项目,那么在Arquillian中组装EAR的正确方法是什么?

0 个答案:

没有答案