私は単純なMavenプロジェクトを手に入れましたが、それを正しくするのに何時間もイライラして失敗しました。このプロジェクトには、1 つの親モジュールと 2 つのサブモジュール (1 つは ear-packaging 用、もう 1 つは ejb 用) が含まれています。ビルドは正常に機能しますが、イヤー パッキングが期待どおりに機能しません。
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>at.betrieb.projekt</groupId>
<artifactId>extended</artifactId>
<version>1.0</version>
</parent>
<artifactId>extended-ear</artifactId>
<packaging>ear</packaging>
<dependencies>
<dependency>
<groupId>at.betrieb.projekt</groupId>
<artifactId>extended-ejb</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<version>6</version>
<generateApplicationXml>false</generateApplicationXml>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<jarModule>
<groupId>at.betrieb.projekt</groupId>
<artifactId>extended-ejb</artifactId>
<bundleDir>/</bundleDir>
</jarModule>
</configuration>
</plugin>
</plugins>
</build>
</project>
パッケージ化されたフォルダーを見ると、次の構造が表示されます。
|-lib
extended-ejb-1.0.jar
activation-1.1.jar
javaee-api-7.0.jar
javax.mail-1.5.0.jar
|-META-INF
application.xml
しかし、私が期待したのはこの構造でした:
|-extended-ejb-1.0.jar
|-lib
activation-1.1.jar
javaee-api-7.0.jar
javax.mail-1.5.0.jar
|-META-INF
application.xml
したがって、基本的には、他のライブラリの外にある ejb が必要でした。javaee-api
これらの他の 3 つのライブラリは、注釈の依存関係を必要とする ejb-module から取得されます。残念ながら、推移的な javax.mail.jar、activation.jar も収集します。
なぜ構造が期待どおりに機能しないのか、今では本当にわかりません。どうしても、このガイドをステップバイステップで実行しようとしました。