使用
Spring Boot Initializer
时会自动生成mvnw相关的文件和目录,一开始觉得没什么用,都删除了。但是实际上mvnw是为了保证项目在不同机器的编译一致性。主要就是maven版本的一致性
只要把mvn
修改为mvnw
就可以了,比如
mvn clean package
# 修改成
./mvnw clean package
mvnw使用的maven就是.mvn/wrapper/maven-wrapper.jar
中的类org.apache.maven.wrapper.MavenWrapperMain
。
其版本号可以在文件.mvn/wrapper/maven-wrapper.properties
中查看
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
./mvnw io.takari:maven:wrapper -Dmaven=3.3.9
在一些老的项目上,如果也想使用mvnw,也可以手动添加
mvn -N io.takari:maven:wrapper
执行后会生成mvnw, mvnw.cmd和.mvn/wrapper目录下的3个文件maven-wrapper.jar
, maven-wrapper.properties
, MavenWrapperDownloader.java
其中mvnw真正调用的maven就在maven-wrapper.jar中的org.apache.maven.wrapper.MavenWrapperMain