2010-11-19 10 views
2

バージョンv2.3.2で修正されたmaven-compiler-plugin v2.0.2のバグのため、2時間を失ったばかりです。Mavenに特定のプラグインの最新バージョンを使用させるには?

Mavenコンパイラプラグインのバージョンを指定していない場合、Maven 2.2.1はv2.0.2を提供するだけです。

私たちのプロジェクトでは、15個以上のMavenプラグインが使用されています。それらのうちのいくつかは特定のバージョンをピン止めしたいものですが、そのほとんど(コンパイラプラグインのようなもの)を考えなくてもアップグレードしたいと思っています。

これをMavenで自動的に行う方法はありますか、または毎月可能なMavenプラグインのアップグレードを調査して、親POMのPluginManagementバージョン番号を変更するという無駄な作業を誰かに割り当てる必要がありますか?

+2

など、固定プラグインのバージョンを使用して自動更新を忘れて、バージョン範囲下位互換性のための警告があります。 – Jeremy

+0

@Jeremy後方互換性のない変更はMaven 3.1になります。その間、Maven 3.0はあなたのお金を修正するのに役立ちます。 –

答えて

6

versions-maven-pluginのようなものをプライマリビルドに結び付けることで、プラグインが最新であるかどうかを示す各ビルドに関するレポートを得ることができます。

方法について詳しくは、このリンクを参照してください:あなたは空想を取得したい場合は、あなたのCIサーバは、新しいバージョンを知らせる[WARNING]ログエントリをチェックするスクリプトを使用して構築し、あなたのMavenの出力を実行していDisplay Plugin Updates

あなたのチームの関連するメンバーに電子メールまたはその他の通知を通知します。

+1

Mavenを2年以上使用していて、mvnのバージョンを実行するだけでいいですか?display-plugin-updatesとすべての有用な情報が得られます。それはまだ手動で行う必要がありますが、それは本当に簡単です。 mvnのバージョンでも通常の依存関係と同じです:display-dependency-updates - ありがとうございます。 – HDave

5

私はこの今日書くことを得る二度目:

-cpuフラグを使用してみてください。 mvn -helpからの出力:

usage: mvn [options] [<goal(s)>] [<phase(s)>] 

Options: 
-cpu,--check-plugin-updates   Force upToDate check for any 
             relevant registered plugins 
+3

FWIWでは、このオプションはMaven 3.0では非推奨です。 –

2

プラグインでバージョン範囲を使用することもできます。

+0

Baaaaaaaaaaaadの練習は、これをしないでください。 –

+0

@Pascal:これはおかしい。依存関係のために、私たちのチームは、これが価値があるということがより痛みを伴うことに同意しました。しかし、プラグインで適切に使用されている、それは悪いことですか?それはまた私に質問をする:一般的に悪い習慣なら、そのユースケースは何か? – javamonkey79

+0

私の意見では、有効なユースケースはありません(Mavenは*バージョン範囲をサポートしていますが、使用することを推奨しません)。 –

7

Mavenコンパイラプラグインのバージョンを指定しないと、Maven 2.2.1はv2.0.2を提供しているようです。

はい、コアと共通のプラグインのバージョンがビルド再現のためsuper POMとMaven無効プラグインバージョン発見に固定されている(MNG-3395参照)Maven 2.0.9のように。

プロジェクトでは、15個以上のMavenプラグインが使用されています。それらのうちのいくつかは特定のバージョンをピン止めしたいものですが、そのほとんど(コンパイラプラグインのようなもの)を考えなくてもアップグレードしたいと思っています。

上記のように、これは悪い考えです。いくつかのプラグインが更新されたため、Mavenビルドを突然失敗させたくないだけです。つまり、固定バージョンを使用する必要があります。そうしないと、が悪い習慣になります。実際には、Maven 3.0はこの習慣を奨励し、そうしないと警告します。そして3.1では、のバージョンMNG-1968を参照)を指定する必要があります。

個人的には、Maven Enforcer PluginとそのRequire Plugin Versionsルールを使用してこのプラクティスを実施しています(つまり、プラグインバージョンをロックダウンしないとビルドに失敗する)。

Mavenを使用して自動的にこれを行う方法はありますか、我々は何者かに毎月の可能なMavenのプラグインのアップグレードを研究して、私たちの親POMにPluginManagementのバージョン番号を変更する報われない仕事を割り当てなければならないのですか?

示唆したように、Versions Maven Pluginは、プラグイン、依存関係などのより新しいバージョンがあるかどうかを確認(および-cpuはMavenの3.0で廃止され、将来のバージョンから削除されることに注意)できるようにする目標を持っています。

しかし本当の質問は、なぜあなたはいつも究極のバージョンを使いたいのですか? IMO、そうする良い理由はありません。修正する必要がある場合にのみアップグレードする必要があります("壊れていない場合は修正しないでください")。

ボトムライン:これは直接適用されていませんが、あなたがいることを立地、プラグインのバージョン番号を提供しないときmaven3が警告を与える

+0

+これは1つです: '個人的には、Maven Enforcer PluginとRequire Plugin Versionsルールを使用してこのプラクティスを実行します(つまり、プラグインのバージョンをロックダウンしないとビルドに失敗します)。 – javamonkey79

+0

@ javamonkey79:これは私のお気に入りのプラグインの1つです。私はすべてのビルドでそれを使用します。 –

+0

@ javamonkey79:ところで、投票をキャストする気軽に:) –

関連する問題