ShrinkWrap を使用して war ファイルを作成しています。Eclipse および m2eclipse (maven) を使用してテストを実行すると、開発環境で正しく動作します。
Jenkins で実行すると、戦争の展開が異なるため、テストが失敗します。たとえば、Jenkins 環境で作成された war では空であるマニフェスト リソースとして、war にカスタム MANIFEST.MF を追加しています。
何か案は?
編集: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");
ちなみに、私のローカル環境では上記のすべてが正常に動作します
アップデート:
2 つの戦争の唯一の違いは、依存関係 arquillian-jacoco であることに気付きました。Jenkins では、jacoco を使用してカバレッジを実行するプロファイルを使用してテストを実行することを忘れていました。
したがって、依存関係 (プロファイルではなく) を削除すると、テストに合格すると、MANIFEST.MF が正しく作成されます。
これは、jacoco 拡張機能が何らかの形で MANIFEST.MF を台無しにしていることを意味していると思いますか?