$ 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.jar
とmaven-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 じゃないとビルドできないものもあるんだよなぁ。