maven-archetype-pluginのアップデート

今回の脱線: maven2で最新のプラグインを取得するには "-U" オプションをつける

なんだか、夜中に目が覚めてしまい、先日から気になっていたcubbyを試そうとおもむろに、archetype:generateを実行するも怒られてしまいますた。

$ mvn archetype:generate -DarchetypeCatalog=http://cubby.seasar.org 
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Required goal not found: archetype:generate
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Sat Sep 13 16:10:46 JST 2008
[INFO] Final Memory: 1M/3M
[INFO] ------------------------------------------------------------------------

どうも、ローカルのmaven-archetype-pluginが古くて「generateゴールなんて知らないよ」となってるみたいだったので、-cpuオプションをつけたんですがアップデートされない。
-cpuオプションの挙動を求めて、maven2のサイトを調べること数時間。その課程でplugin-registry.xmlというモロ関係しそうな設定ファイルの存在を初めて知ったのですが、設定項目はあるものの記述方法がさっぱり書いてない…。
肝心のオプションについては以下の記述を見つけたのですが、僕の英語の読解力では意味が分からないです。

  • --check-plugin-updates - Force the plugin version manager to check for updated versions of any registered plugins, currently using RELEASE metadata only.
http://maven.apache.org/guides/introduction/introduction-to-plugin-registry.html

現状は、maven-metadata.xmlを更新するのではなく、ローカルのmaven-metadata.xmlのRELEASEに指定されているバージョンのものを使うってことなのだろうか…。
しかたなく、カレントディレクトリにpom.xmlがない場合にアクティベーションされるprofileを、settings.xmlに追記するようにしてみようかと思ったがやはり気になるなあ。そうこうしていると以下の記述が目にとまった。

For now, Maven should keep using the same version of a plugin - assuming a different version is not specified in the POM - until the user chooses to run with the -U option explicitly enabled.

http://maven.apache.org/guides/introduction/introduction-to-plugin-registry.html

ん?pom.xmlに明示しない限り、-Uオプションをつけてmvnコマンドを実行するまでは同じ(古い)バージョンのプラグインが使われる…と読めるぞ…。ということで、-Uオプションをつけて実行してみると…

$ mvn archetype:generate -X -U -DarchetypeCatalog=http://cubby.seasar.org 
+ Error stacktraces are turned on.
Maven version: 2.0.9
Java version: 1.5.0_15
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
...(snip)...
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[DEBUG] Loading plugin prefixes from group: org.apache.maven.plugins
[INFO] org.apache.maven.plugins: checking for updates from central
[DEBUG] Loading plugin prefixes from group: org.codehaus.mojo
[INFO] org.codehaus.mojo: checking for updates from central
[INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for updates from central
[DEBUG] maven-archetype-plugin: resolved to version 2.0-alpha-3 from repository central
...(snip)...
[INFO] [archetype:generate]
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> cubby-archetype (Cubby 1.1.0)
Choose a number:  (1): 

うまくいきました。でも、もうmavenだけで疲れてしまったので寝ます…。
続きは明日…というか今日か。