23

Maven ではプラグインのバージョンがオプションであることに気付きました。モジュールを指定せずにビルドできます。maven-bundle-plugin の例を見てみましょう。

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    ....
</plugin>

これを試すために、親なしで単純な pom.xml を作成したので、pluginManagement は関与しません。また、maven-model-builder のスーパー スーパー pom-4.0.0.xml をチェックして、maven-bundle-plugin がないことを確認しました。このプラグインのバージョンはどこにも指定されていません。

maven はどのバージョンを使用するかをどのように決定しますか?

4

3 に答える 3

23

Maven 3.x 互換性に関する注意事項から:

自動プラグイン バージョン解決

POM またはコマンド ラインで明示的なバージョンを指定せずにプラグインが呼び出された場合、Maven 2.x は、最新バージョンがリリースまたはスナップショットのいずれかである場合に、利用可能な最新バージョンを選択していました。安定性のために、Maven 3.x は最新のスナップショット バージョンよりも最新のリリース バージョンを優先します。

プラグインの自動バージョン解決によって再現不可能なビルドが発生する恐れがあるため、POM のプラグイン宣言に関する限り、この機能は削除される予定です。Maven 3.x のユーザーは、見つからないプラグイン バージョンが検出されたときに警告を出力して、POM またはその親 POM の 1 つにプラグイン バージョンを追加するよう促します。Enforcer ルールの requirePluginVersions を使用して、POM に不足しているプラ​​グイン バージョンをさらにチェックできます。

于 2015-03-01T08:57:11.327 に答える