Maven Wrapper

Maven Wrapper(mvnw)确保项目依赖于特定Maven版本,避免因版本不一致导致的问题。它通过maven-wrapper.properties配置文件指定所需Maven版本,并在执行mvnw命令时自动下载和使用该版本。mvnw简化了Maven操作,使得构建过程更加稳定和一致。添加mvnw支持可通过在pom.xml中添加Plugin声明或直接执行特定Goal完成。注意使用mvnw时,settings.xml的位置可能会影响构建行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven Wrapper

1.Maven包装器

Maven用作项目的依赖管理、测试用例运行、打包、构件管理于一身;
随着maven飞速发展,它的发行版本也越来越多,如何保证你使用的Maven的版本和下载你源码的人的Maven的版本一致呢,这时候mvnw就大显身手了。
mvnw全名是Maven Wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的Maven版本,当用户执行mvnw clean 命令时,发现当前用户的Maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。

maven的包装器,通过mvnw命令替代mvn,简化mvn操作
.mvn文件夹存放着maven-wrapper.properties和maven-wrapper.properties.jar包以及名为MavenWrapperDownloader的java文件;
Maven Wrapper更简单确保Maven构建的用户拥有运行Maven构建所需的一切;
Maven对于用户来说非常稳定,但是随着Maven变化,用户将更容易拥有项目提供的完全封装的构建设置;
Maven Wrapper更容易做到,这是从Gradle借来的好主意;

2.使用方法

为项目添加mvnw支持很简单,有两种方式:
方法一:在pom.xml中添加Plugin声明:

<plugin>
    <groupId>com.rimerosolutions.maven.plugins</groupId>
    <artifactId>wrapper-maven-plugin</artifactId>
    <version>0.0.4</version>
</plugin>

这样当我们执行mvn wrapper:wrapper 时,会帮我们生成mvnw.bat、mvnw、maven/maven-wrapper.jar、maven/maven-wrapper.properties这些文件;
然后我们就可以使用mvnw代替mvn命令执行所有的maven命令,比如mvnw clean package;

方法二:直接执行Goal(推荐使用这种)

#表示我们期望使用的Maven的版本为3.6.2
mvn -N io.takari:maven:wrapper -Dmaven=3.6.2

产生的内容和第一种方式是一样的,只是目录结构不一样:
maven-wrapper.jar和maven-wrapper.properties在".mvn/wrapper"目录下

使用的注意事项:
1、由于我们使用了新的Maven ,如果你的settings.xml没有放在当前用户下的.m2目录下,那么执行mvnw时不会去读取你原来的settings.xml文件
2、在mvnw.bat中有如下的一段脚本:if exist “%M2_HOME%\bin\mvn.cmd” goto init,意思是如果找到mvn.cmd就执行初始化操作,但是Maven早期版本不叫mvn.cmd,而是叫mvn.bat,所以会报"Error: M2_HOME is set to an invalid directory"错误,改成你本地的maven的匹配后缀就好了。

参考:
https://github.com/takari/maven-wrapper
https://www.cnblogs.com/EasonJim/p/7620085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值