例をできるだけ単純にするために、古典的なJavaEE5アプリケーションがあるとしましょう。EARモジュールで使用し、を
使用するとします。
また、WARモジュールで使用しており、使用しています。EARはWARで提供されるように設定されます。x-lib
x-lib
commons-io
y-lib
y-lib
commons-io
私が得る結果は次のとおりです。
- app.ear
/lib
x-lib.jar
commons-io.jar
/app.war
/WEB-INF
/lib
y-lib.jar
commons-io.jar
app.war/WEB-INF/lib
commons-ioがすでにパッケージ化されている場合は、パッケージ化されたくありませんapp.ear/lib
。
私の戦争のpom.xmlには、次のものがあります。
<dependency>
<groupId>my.group</groupId>
<artifactId>app</artifactId>
<type>ejb</artifact>
<scope>provided</scope>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>some.other.group</groupId>
<artifactId>y-lib</artifactId> <!-- This loads commons-io as compile dependency -->
<version>1.2.3</version>
</dependency>
アプリのejb依存関係とともに提供されるすべてのものを、WARに含まず、提供されるように設定する必要があることをMavenに伝える方法はありますか?
重複したJARをすべて追跡して、提供されたものとして設定したり、1つずつ明示的に除外したりしたくありません。
編集
私はスキニー戦争の解決策を知っています。ただし、WARとEARで依存関係を複製するというdrwabackは好きではありません。多分あなたはこれを克服する方法を知っています。