実際、設計上、Maven はプロジェクトの依存関係として宣言された war の推移的な依存関係を解決しません。実際にはMNG-1991という問題がありますが、Maven 2.x では解決されず、オーバーレイでこの問題を回避できるかどうかもわかりません。提案された解決策についての私の理解は、たとえば pom タイプのプロジェクトで依存関係を複製することです。
(編集:さらに掘り下げた後、このスレッドで興味深いものを見つけました。以下に引用します:
私は先月、Maven war プラグインの war オーバーレイ機能を多用する AppFuse プロジェクトの開発を支援してきました。それは本当に気の利いた機能です!
戦争オーバーレイで最大のパワーを得るために、プロジェクトが完全な依存関係として戦争アーティファクトを使用できるようにする Warpath プラグインを開発しました。簡単に言えば:
1) war 依存アーティファクトの /WEB-INF/classes ディレクトリの内容は、通常のコンパイルなどのタスクのためにプロジェクトのクラスパスに含めることができます。
2) war 依存関係アーティファクトからの推移的な依存関係は、他のプラグイン (たとえば compile や ear) で使用できるようになります。したがって、スキニー war を作成するときにすべての依存関係を含める必要はもうありません!
このプラグインは、ここ数か月間 AppFuse プロジェクトで積極的に使用されており、使用可能で安定している段階にあると感じています。war プラグイン チームは、war プラグイン内に warpath 機能を含めることに関心がありますか? それをホストするのに最も自然な場所のようです。
そのため、私はそれを使用した経験はありませんが、maven warpath プラグインは実際には見栄えがよくシンプルで、中央リポジトリで利用できます。これを使用するには、次のプラグイン構成要素をpom.xml
ファイルに含めます。
[...]
<build>
<plugins>
<plugin>
<groupId>org.appfuse</groupId>
<artifactId>maven-warpath-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>add-classes</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
そして、 warpathタイプの依存関係としてクラスパスに含めたい war 依存関係を追加します。
[...]
<dependencies>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>warpath</type>
</dependency>
</dependencies>
[...]
war と warpath の両方の依存関係タイプが必要です。war タイプは Maven war プラグインが war オーバーレイを行うために使用し、warpath タイプは Warpath プラグインがプロジェクトのクラスパスに含めるアーティファクトの正しいリストを決定するために使用します。
やってみます。)