1

プラグイン要素の依存関係要素を pom に追加できることがわかりました。

質問: 何のために? プラグインで使用されるすべてのライブラリをその中に含める必要はありませんか? プラグインで使用される一部のライブラリは追加料金がかかりますか?

<plugin>
    <groupId>org.raml.plugins</groupId>
    <artifactId>raml-jaxrs-maven-plugin</artifactId>
    <version>1.3.4</version>
    <dependencies>
        <dependency>
            <groupId>org.raml</groupId>
            <artifactId>raml-parser-2</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
</plugin>
4

2 に答える 2

1

公式のMaven POM リファレンスドキュメントから:

dependencies : 依存関係は POM 内で多く見られ、すべてのプラグイン要素ブロックの下にある要素です。依存関係は、そのベース ビルドと同じ構造と機能を持ちます。この場合の主な違いは、プロジェクトの依存関係として適用するのではなく、それらが属するプラグインの依存関係として適用されるようになったことです。これの威力は、プラグインの依存関係リストを変更することです。おそらく、未使用のruntime依存関係を 経由exclusionsで削除するか、必要な依存関係のバージョンを変更することによって可能です。

つまり、特定のプラグインの範囲内で、一部のライブラリをプラグイン クラスパスから除外したり、特定のバージョンをオーバーライドしたりできます。

依存関係をプラグインに追加しても、ビルド中のアプリケーションのクラスパスは変更されません。プラグインのdependenciesfor は、クラスパスを直接変更するための、さらなる構成可能性のエントリ ポイントです。

ほとんどの場合、そのレベルの粒度で作業する必要はありませんが、場合によっては非常に便利であり、一部のプラグインは実際に特定の依存関係を追加する必要があるか、または推奨します。たとえば、変換またはコード生成 (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で提供されています。これは、よりクリーンで合理的なアプローチです。

于 2016-08-27T11:55:30.443 に答える
0

plugin 要素の依存関係により、プラグインで使用する特定のバージョンを定義できます。

これはmaven.apache.orgの良い例です

たとえば、Maven Antrun プラグイン バージョン 1.2 は Ant バージョン 1.6.5 を使用します。このプラグインを実行するときに最新の Ant バージョンを使用する場合は、<dependencies>要素を追加する必要があります。

于 2016-08-27T12:10:17.153 に答える