Arquillian ShrinkWrap Web Archive在不同环境中的创建方式不同

时间:2015-10-01 10:27:20

标签: maven jenkins jboss-arquillian shrinkwrap

我正在使用ShrinkWrap创建一个war文件,当我通过eclipse和m2eclipse(maven)运行测试时,它在我的开发环境中正常工作。

当我在Jenkins上运行时,战争部署是不同的,因此测试失败。例如,我在战争中添加自定义MANIFEST.MF作为清单资源,在Jenkins环境中创建的战争中为空。

有什么想法吗?

编辑:我尝试了很多不同的方法来添加MANIFEST.MF,原始代码是:

 return ShrinkWrap
        .create(WebArchive.class, warName)
        .addClass(DbCleanupManager.class)
        .addAsLibraries(resolveBasicDependencies())
        .addAsWebInfResource(new File(TEST_RESOURCES, "jboss-deployment-structure.xml"))
        .addAsResource("version.properties", "version.properties")
        .addAsResource("logback-test.xml", "logback.xml")
        .addAsManifestResource("MANIFEST.MF");

但我也尝试过:

.setManifest(
     new StringAsset(
     "Dependencies: org.apache.ws.security,org.apache.cxf,org.apache.cxf.impl,org.jboss.ws.cxf.jbossws-cxf-client\n"));

还尝试首先删除MANIFEST.MF(如果它是由ShrinkWrap添加的)然后将其添加到存档中,即:。

WebArchive war = ShrinkWrap
        .create(WebArchive.class, warName)
        .addClass(DbCleanupManager.class)
        .addAsLibraries(resolveBasicDependencies())
        .addAsWebInfResource(new File(TEST_RESOURCES, "jboss-deployment-structure.xml"))
        .addAsResource("version.properties", "version.properties")
        .addAsResource("logback-test.xml", "logback.xml");

    war.delete(ArchivePaths.create("META-INF/MANIFEST.MF"));
    war.addAsManifestResource("MANIFEST.MF");

顺便说一句,以上所有内容在我的本地环境中都可以正常工作

更新:

我注意到两次战争的唯一区别是依赖性arquillian-jacoco。我忘记了在Jenkins中我使用jacoco运行覆盖的配置文件来运行测试。

所以当我删除测试通过的依赖项(不是配置文件)时,MANIFEST.MF就会正确创建。

我想这意味着jacoco扩展会以某种方式混淆MANIFEST.MF?

0 个答案:

没有答案