0

我正在使用 ShrinkWrap 创建一个战争文件,当通过 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?

4

0 回答 0