maven、gradle的Wrapper机制(入门级)

maven的 wrapper

1,区分命令: mvn是maven全局环境的命令,mvnw是wrapper机制所使用的脚本,它会默认使用项目根目录./mvn下的配置。
2,maven-warpper.properties配置文件是用于管理maven版本的,但是请注意,该文件由命令自动生成,不建议手写。
3,maven 的warpper机制不能设置依赖解析的远程仓库url,只能通过distributionUrl参数配置Maven 发行包的下载地址,

命令

Maven的 Wrapper实际上就是Apache Maven Wrapper 插件的使用。(以下命令均在项目根目录下运行)

构建wrapper项目

maven有四种wrapper模式,mvn wrapper:wrapper -Dtype={类型}

mvn wrapper:wrapper    
mvn  wrapper:wrapper  -Dtype=only-script
mvn  wrapper:wrapper  -Dtype= script
mvn  wrapper:wrapper  -Dtype=bin
mvn  wrapper:wrapper  -Dtype=source
官文翻译:
Apache Maven 封装器分发类型共有 4 种分发类型可用:

only-script(默认类型):mvnw/mvnw.cmd 脚本的精简实现将直接通过 wget 或 curl 在 *nix 系统上,或通过 PowerShell 在 Windows 系统上下载 Maven,然后执行/调用下载的 Maven 分发版本中的原始 mvn/mvn.cmd 脚本。此类型不使用 maven-wrapper.jar 或 MavenWrapperDownloader.java,只需要封装脚本。

script:使用此类型时,脚本将尝试在基于 Unix 的系统上通过 wget 或 curl 下载脚本,或在 Windows 上使用 PowerShell。

bin:使用此类型时,maven-wrapper jar 已经存在于 .mvn/wrapper 目录中,因此您不必依赖 wget/curl 或 PowerShell。缺点是项目中将在源代码管理系统 (SCM) 中包含一个二进制文件。

source:由于 Maven 运行需要 Java,为何不编译并运行一个类文件来下载 Maven 封装器 jar 呢?此类型包含一个 .mvn/wrapper/MavenWrapperDownloader.java,它将即时编译并执行。

可以通过 mvn wrapper:wrapper -Dtype={类型} 指定类型,其中 {类型} 是上面列出的任何类型。

当 wrapper:wrapper 在包含 .mvn/wrapper/maven-wrapper.properties 文件的 Maven 模块中运行时,将为执行目标使用现有 Maven 封装器的分发类型。这允许在不意外更改现有项目的分发类型的情况下更新 Maven 封装器。您仍然可以使用 -Dtype={类型} 来更改现有安装的分发类型。

指定版本

使用-Dmaven=x参数。
例如:mvn wrapper:wrapper -Dmaven=3.9.11

生成配置为:

wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://maven.aliyun.com/repository/central/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip

ps: 实际执行时很慢,download耗时很长,有缘人可以在评论区补充。

gradle的 wrapper

同maven,只是名称不同,在gradle是被成为wrapper的任务.

引用:
https://docs.gradle.org/current/userguide/gradle_wrapper.html
https://maven.apache.org/tools/wrapper/maven-wrapper-plugin/usage.html

当你不会使用某个命令时,请永远记得找我,而不是某个小三。 来自 --help

posted @ 2025-09-17 16:10  wenzhuo4657  阅读(7)  评论(0)    收藏  举报