🧤

Spring Initializrのmaven-wrapper.jarを取り戻す

2024/09/10に公開

TL;DR

$ mvn wrapper:wrapper -Dtype=bin

https://start.spring.io/

久しぶりにSpring InitializrでProjectをMavenにしたらmaven-wrapper.jarがなくなっていたので備忘録です。

$ ls -laR maven-project
maven-project:
total 36
drwxr-xr-x 4 spring spring   105 Sep  9 13:00 .
drwxr-xr-x 6 spring spring  4096 Sep  9 13:05 ..
-rw-r--r-- 1 spring spring   395 Sep  9 13:00 .gitignore
-rw-r--r-- 1 spring spring  1063 Sep  9 13:00 HELP.md
drwxr-xr-x 3 spring spring    21 Sep  9 13:00 .mvn
-rwxr-xr-x 1 spring spring 10665 Sep  9 13:00 mvnw
-rw-r--r-- 1 spring spring  6912 Sep  9 13:00 mvnw.cmd
-rw-r--r-- 1 spring spring  1421 Sep  9 13:00 pom.xml
drwxr-xr-x 4 spring spring    30 Sep  9 13:00 src

maven-project/.mvn:
total 0
drwxr-xr-x 3 spring spring  21 Sep  9 13:00 .
drwxr-xr-x 4 spring spring 105 Sep  9 13:00 ..
drwxr-xr-x 2 spring spring  38 Sep  9 13:00 wrapper

maven-project/.mvn/wrapper:
total 4
drwxr-xr-x 2 spring spring  38 Sep  9 13:00 .
drwxr-xr-x 3 spring spring  21 Sep  9 13:00 ..
-rw-r--r-- 1 spring spring 951 Sep  9 13:00 maven-wrapper.properties

...

こうなってる。

$ tail -3 maven-project/.mvn/wrapper/maven-wrapper.properties 
wrapperVersion=3.3.2
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip

distributionTypeがonly-scriptになっているのが原因。

https://maven.apache.org/wrapper/maven-wrapper-plugin/wrapper-mojo.html

distributionTypeはscript, bin, source, only-scriptと4種類ある。

https://github.com/apache/maven-wrapper/releases/tag/maven-wrapper-3.3.0

Maven Wrapper 3.3.0からMake "only-script" the default wrapperになった。

https://github.com/spring-io/initializr/issues/1529

それに伴いSpring InitializrのJAR fileがOmitされてる。

https://maven.apache.org/wrapper/#usage-with-or-without-binary-jar

Issueに掲載されていたドキュメントを確認。

$ cd maven-project
$ mvn wrapper:wrapper -Dtype=bin
...
$ cd ..

type=binで生成する。

mvnw
mvnw.cmd
.mvn/wrapper/maven-wrapper.jar
.mvn/wrapper/maven-wrapper.properties

maven-wrapper.jarが追加され、Wrapperに必要な3つのファイルが更新される。

$ tail -4 maven-project/.mvn/wrapper/maven-wrapper.properties 
wrapperVersion=3.3.2
distributionType=bin
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar

distributionTypeがbinになった。
distributionUrlのバージョンが変わった場合は修正。

$ ls -laR maven-project
maven-project:
total 36
drwxr-xr-x 4 spring spring   105 Sep  9 13:15 .
drwxr-xr-x 6 spring spring  4096 Sep  9 13:10 ..
-rw-r--r-- 1 spring spring   395 Sep  9 13:00 .gitignore
-rw-r--r-- 1 spring spring  1063 Sep  9 13:00 HELP.md
drwxr-xr-x 3 spring spring    21 May 21 15:12 .mvn
-rwxr-xr-x 1 spring spring 11172 May 21 15:12 mvnw
-rw-r--r-- 1 spring spring  7903 May 21 15:12 mvnw.cmd
-rw-r--r-- 1 spring spring  1421 Sep  9 13:00 pom.xml
drwxr-xr-x 4 spring spring    30 Sep  9 13:00 src

maven-project/.mvn:
total 0
drwxr-xr-x 3 spring spring  21 May 21 15:12 .
drwxr-xr-x 4 spring spring 105 Sep  9 13:15 ..
drwxr-xr-x 2 spring spring  63 Sep  9 13:15 wrapper

maven-project/.mvn/wrapper:
total 68
drwxr-xr-x 2 spring spring    63 Sep  9 13:15 .
drwxr-xr-x 3 spring spring    21 May 21 15:12 ..
-rw-r--r-- 1 spring spring 63028 May 21 15:12 maven-wrapper.jar
-rw-r--r-- 1 spring spring  1060 Sep  9 13:15 maven-wrapper.properties

...

めでたしめでたし。

Discussion