2013-05-22 7 views
5

(Javaの7とMacでのMaven 3.0.3を使用して)Mavenは、コマンドラインから使用するプラグインに使用するプラグインのバージョンをどのように決定しますか?

私はプラグインの(2.8は私の地元のレポで利用可能であるかどうかに関係なく)と文句mvn dependency:analyze-duplicate Mavenのバージョン2.1を使用して実行すると:

[ERROR] Could not find goal 'analyze-duplicate' in plugin org.apache.maven.plugins:maven-dependency-plugin:2.1 among available goals unpack-dependencies,.... 

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:analyzeとして実行すると問題なく動作します。

バージョンが明示的に指定されていない場合、mavenは常に最新のバージョンに戻っています(まだローカルリポジトリに入っていなくても)?

私には何が欠けていますか?お返事ありがとうございました。

+0

これを解決しましたか?同じ理由でこの正確な問題を解決することに非常に興味があります。 – Ittai

答えて

7

Apache Mavenは、 -pomは、新しいバージョンのMavenでアップグレードできます。現在のトランクを参照してください:Mavenの依存性 - プラグインとのmaven-リリース - プラグインの両方のMaven-3.1ではhttps://git-wip-us.apache.org/repos/asf?p=maven.git;a=blob_plain;f=maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml

<pluginManagement> 
    <!-- NOTE: These plugins will be removed from future versions of the super POM --> 
    <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) --> 
    <plugins> 
    <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.3</version> 
    </plugin> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
    </plugin> 
    <plugin> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.8</version> 
    </plugin> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.3.2</version> 
    </plugin> 
    </plugins> 
</pluginManagement> 

がアップグレードされています。以前のリリースでは、2.1と2.0が同じ順序で使用されていました。

pom.xmlにバージョンを指定していない場合、またはこれらのバージョンがない場合は、デフォルトです。

有効なPOMを確認するには、mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pomまたはhelp:effective-pomを実行しますが、スーパーPOMのバージョンに依存します。

+0

ありがとう!私は3.0.5のユーザーmavenを実行していますが、まだその問題がありました。スーパーポンの「私の」コピーをどこから見ることができるのでしょうか?ミステリー – Ittai

+1

https://jira.codehaus.org/browse/MNG-5400を明確にするために、私はMavenバージョンに間違っていました。私はそれを2.5にプッシュし、Herveを少し後に2.8にしました。https://git-wip-us.apache.org/repos/asf?p=maven.git;a=history;f=maven-model-builder/を参照してください。 src/main/resources/org/apache/maven/model/pom-4.0.0.xml; h = e8b42d87a082bd52d80f438d3b36cf424513a55b; hb = 9404499ccdf27f6505ba4538130168c411f41eeaです。だから、Maven 3.0.5はまだm-dependency-2.1を指しています –

+0

+1これはたぶん動作の理由です – FrVaBe

3

プラグインのバージョンを解決するプロセスは、hereと記載されています。短いMavenので

は、このために、このルールによって検出された最初のバージョンを使用します。(有効な場合)、プラグインレジストリで定義されたプロジェクトのPOM

  • バージョン
  • で定義されて

    • バージョン最新バージョンメタデータ
    • RELEASEバージョンメタデータ

    は、だからあなたのプロジェクトのPOM(または親POM)で顔をしていますこのプラグインのバージョンを指定した場合

    更新:あなたの問題についての理由は、Mavenの依存性 - プラグインのバージョン2.1は、MavenのSuper POMのpluginManagementセクションで指定されていること、です。あなたのプロジェクトのpomはこれらの設定を継承していますので、デフォルトでバージョン2.1が使用されています(@Robert Scholteの答えをアップしてください)

  • +0

    あなたの答えをありがとう。 問題は、 'Name:Maven Dependency Plugin ... Version:2.8'というヘルプコマンドを実行しても、まだバージョン2.1が実行されていない状態で実行していても、それがダウンロードされていてもダウンロードできないということです。 また、pomファイルも確認しました。このプラグインへの参照はまったく含まれていません。 私の質問はまだ完全に答えられていません。 特定のプラグインのLATESTとRELEASEバージョンのメタデータをどこから見つけるかを教えてもらえますか?特に依存関係プラグインの場合。 - これは私が直面している問題だろうか? –

    +0

    http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-dependency-pluginをチェックする私は2.7までのすべてのバージョンがリリースとして正しくマークされていると思います。これは "RELEASE version metadata"を起動するのに十分ですか? –

    +0

    @Tom Finkあなたはpomに宣言がありますか? – FrVaBe

    関連する問題