Maven Wrapper (mvnw) の導入メモ

2017/10/06   #maven 
このエントリーをはてなブックマークに追加
$ cd project_dir
$ mvn -N io.takari:maven:wrapper -Dmaven=3.2.1
  • -Dmaven=3.2.1 などとすると Maven のバージョンを決め打ちできる
    • 指定しなかった場合はその時点での最新版が適用される
  • mvnw 及び mvnw.cmd コマンドがルートにできる
    • 以降は ./mvnw package などと実行すると指定の Maven のバージョンで実行できる
    • mvnw から初めて実行すると、.mvn/wrapper/maven-wrapper.properties の distributionUrl で設定された URL から Maven の実行バイナリをダウンロードして ~/.m2/wrapper/dists/ 以下に展開し、それを使って mvn コマンドを起動している
  • .mvn ディレクトリができる
    • その中に wrapper ディレクトリができ、その中に maven-wrapper.jarmaven-wrapper.properties が入る
    • これらも Git 管理するべき、ignore しない

参考:


Maven 2.x には未対応っぽい

Maven 2.2.1 でやってみたところ、以下のエラーが発生した。

$ mvn -N io.takari:maven:wrapper -Dmaven=2.2.1
$ ./mvnw package -Dmaven.test.skip=true
Exception in thread "main" java.lang.RuntimeException: Could not locate the Maven launcher JAR in Maven distribution '/Users/ryu/.m2/wrapper/dists/apache-maven-2.2.1-bin/734vqac49jfbm96jf0vlddftns/apache-maven-2.2.1'.
        at org.apache.maven.wrapper.BootstrapMainStarter.findLauncherJar(BootstrapMainStarter.java:50)
        at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:28)
        at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
        at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:55)

launcher does not support maven 2.2.1 · Issue #42 · takari/maven-wrapper
2.x はもう EOL だし、新しいの使えよ的な結論になっている。
ただ、世の中のレガシー的には Seasar の Dolteng など Maven 2.x じゃないとビルドできないものもあるんだよなぁ。