Maven-ear-plugin - 複数のモジュールを除外します。瓶、戦争など
-
20-09-2019 - |
質問
新しいプロジェクトの EAR ファイルを作成するために Maven EAR プラグインを使用してきました。プラグインのドキュメントで、モジュールの除外ステートメントを指定できることに気付きました。たとえば、私のプラグインの構成は次のとおりです...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<jboss>
<version>5</version>
</jboss>
<modules>
<!-- Include the templatecontroller.jar inside the ear -->
<jarModule>
<groupId>com.kewill.kdm</groupId>
<artifactId>templatecontroller</artifactId>
<bundleFileName>templatecontroller.jar</bundleFileName>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
<!-- Exclude the following classes from the ear -->
<jarModule>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<excluded>true</excluded>
</jarModule>
<jarModule>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<excluded>true</excluded>
</jarModule>
... declare multiple excludes
<security>
<security-role id="SecurityRole_1234">
<role-name>admin</role-name>
</security-role>
</security>
</configuration>
</plugin>
</plugins>
このアプローチは、除外するモジュールが 4 ~ 5 つほどある小規模なプロジェクトにはまったく問題ありません。ただし、私のプロジェクトには 30 以上のプロジェクトがあり、まだプロジェクトが開始されたばかりなので、プロジェクトが拡大するにつれて、この数も増加する可能性があります。
モジュールごとに exclude ステートメントを明示的に宣言する以外に、ワイルドカードを使用したり、すべての Maven 依存関係を除外フラグを使用して、宣言したモジュールのみを含めて他のすべてを除外したりすることは可能ですか?もっとエレガントな解決策を知っている人はいますか?
解決
モジュールごとに exclude ステートメントを明示的に宣言する以外に、ワイルドカードを使用したり、すべての Maven 依存関係を除外フラグを使用して、宣言したモジュールのみを含めて他のすべてを除外したりすることは可能ですか?
の maven-ear-プラグイン はこの機能をすぐに提供するわけではありません (そして、いずれにしても、設定が簡単だとは思いません。耳は非常に正確にパッケージ化する必要があります)。ただし、ここで明らかになっていないのは、除外する必要がある依存関係をどのように取得するかということです。あなたの答えに応じて、それらを処理するにはいくつかの方法がある可能性があります。
- 依存関係にある場合、それらの一部をオプションとして宣言することもできます。 あなたの 推移的に取得するために避けるべきアーティファクト。
- いくつかの依存関係を「提供済み」としてマークすることもできます (そして、それらを親 POM に置き、EAR の POM で必要なものだけを再宣言します)。
全体像を見ないと答えるのは難しいですが。
他のヒント
ワイルドカードがサポートされているかどうかわからないが、あなた自身のモジョを書くことは非常に簡単です。既存のモジョをラップしてから、そのようなあなたのワイルドカード構文として独自のデザイン、いくつかの任意の設定を取ることができます。
より良いまだ、あなたはMavenのチームにあなたのモジョを提出することができた(!)
私は同様の問題に直面していました。私はいくつかのjarファイルが提供範囲を有するマルチモジュールプロジェクトを持っていたのでそれだった、私はちょうどそれが独立して行うことであり、子供の耳のポンポンから親タグを削除しました。その後、私は必要な限り多くのjarファイルを含めることなどが使用します。
これが役に立てば幸い!!!