3

テスト用に Arquillian を使用して JBoss 7.x に war をデプロイしていますが、Apache Commons Collections に依存しています。ただし、モジュールの依存関係を取得していないようです。

マニフェスト.MF

Dependencies: org.apache.commons.collectionss export

Arquillian の展開

@Deployment
public static Archive<?> createDeployment() {
    WebArchive archive = ShrinkWrap.create(WebArchive.class);

    archive
        .addPackages(true, "com.example.package")
        .addAsResource("META-INF/MANIFEST.MF", "META-INF/MANIFEST.MF")

      // * Tried the following two options with no luck
      //.AddAsManifestResource("META-INF/MANIFEST.MF", "MANIFEST.MF")
      //.AddAsWebInfResource("META-INF/MANIFEST.MF", "META-INF/MANIFEST.MF")

      // * If I enable the following, it works fine. getLibrary just picks
      // * up the lib through maven.
      //.addAsLibraries(
      //         getLibrary("commons-collections:commons-collections:3.2.1"))
       ;

    return archive;
}

jboss-deployment-structure.xml大槌で木の実を割るような感じなので使いたくないです。

何か案は?

4

2 に答える 2

5

私の場合、ArquillianMANIFEST.MFsrc/test/resourcesおよびfor を追加しました.addAsManifestResource("MANIFEST.MF")

マニフェスト.MF

Manifest-Version: 1.0
Built-By: me
Build-Jdk: 1.6.0_45 
Created-By: Maven Integration for Eclipse
Dependencies: org.infinispan export

アルキリアン

@Deployment(testable = false)
public static WebArchive createDeployment() {
    MavenDependencyResolver mvnResolver = DependencyResolvers.use(MavenDependencyResolver.class).loadMetadataFromPom("pom.xml").goOffline();

    return ShrinkWrap
            .create(WebArchive.class, "example.war")
            .addPackages(true, Filters.exclude(".*Test.*"), "com/comapany/")
            .addAsManifestResource("MANIFEST.MF")
            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    }
}
于 2013-05-29T08:35:55.027 に答える
0

結局のところ、この質問のことをすべて忘れていたので、同じ質問をもう一度しました(今回は Jar ファイルについて)。

その後、解決策も発見されました:(他の質問と同じ)

全体がずっとシンプルになりました。

.addAsManifestResource OR .setManifest を使用しても、MANIFEST.MF は Maven によって自動生成されました。

これは、カスタム MANIFEST.MF を使用して .setManifest("META-INF/MANIFEST.MF"); を使用する代わりに、pom.xml の次のセクションで解決されました。MANIFEST.MF は自動生成され、リソース フォルダーにカスタマイズされたコピーはありません (とにかく無視されたため、何よりも混乱を避けるためです)。

<build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
       <configuration>
          <archive>
             <manifestEntries>
                <Dependencies>
                org.infinispan, 
                org.infinispan.infinispan-tree export,
                </Dependencies>
             </manifestEntries>
          </archive>
       </configuration>
     </plugin>
    </plugins>
</build>
于 2013-12-17T12:13:41.010 に答える