我正在使用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?