公式のMaven POM リファレンスドキュメントから:
dependencies : 依存関係は POM 内で多く見られ、すべてのプラグイン要素ブロックの下にある要素です。依存関係は、そのベース ビルドと同じ構造と機能を持ちます。この場合の主な違いは、プロジェクトの依存関係として適用するのではなく、それらが属するプラグインの依存関係として適用されるようになったことです。これの威力は、プラグインの依存関係リストを変更することです。おそらく、未使用のruntime
依存関係を 経由exclusions
で削除するか、必要な依存関係のバージョンを変更することによって可能です。
つまり、特定のプラグインの範囲内で、一部のライブラリをプラグイン クラスパスから除外したり、特定のバージョンをオーバーライドしたりできます。
依存関係をプラグインに追加しても、ビルド中のアプリケーションのクラスパスは変更されません。プラグインのdependencies
for は、クラスパスを直接変更するための、さらなる構成可能性のエントリ ポイントです。
ほとんどの場合、そのレベルの粒度で作業する必要はありませんが、場合によっては非常に便利であり、一部のプラグインは実際に特定の依存関係を追加する必要があるか、または推奨します。たとえば、変換またはコード生成 (WSDL への WSDL Java など) には、おそらくさらに依存関係が必要になるでしょう (どのバージョンとどのバージョンを選択するか)。
さらに公式な例が、公式のMaven - Guide to configure pluginsドキュメントで提供されています。
Build プラグインの依存関係を構成して、通常はより新しい依存関係バージョンを使用できます。
たとえば、Maven Antrun プラグイン バージョン 1.2 は Ant バージョン 1.6.5 を使用します。このプラグインを実行するときに最新の Ant バージョンを使用する場合は、<dependencies>
要素を追加する必要があります。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.2</version>
...
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-launcher</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
...
</project>
ゴールを使用して Java プログラムを実行し、実際にはそのクラスパスにライブラリを追加する必要があるが、ビルド中のアプリケーションのクラスパスを変更したくない場合に備えて、別の例が公式のExec Maven プラグイン ドキュメントjava
で提供されています。これは、よりクリーンで合理的なアプローチです。