跳转至

安装

  • http://maven.apache.org/configure.html

环境变量

  • MAVEN_HOME:maven安装目录=maven.home
  • MAVEN_USER_HOME:wrapper安装目录
    • `MAVEN_USER_HOME
      • wrapper/dists/{zipBaseName}/{url md5 base32}/`
        • zipFileName:压缩包
        • zipBaseName/:解压缩目录(无bin或者all等)
      • maven.properties:传递给maven wrapper的maven参数
    • 如果设置了这个,其实本地仓库就可以直接引用这个变量${env.MAVEN_USER_HOME}/repository
  • MAVEN_CONFIG:传递给maven wrapper的maven参数
    • 且maven的 MAVEN_CMD_LINE_ARGS=MAVEN_CONFIG
      • 这个就是maven的mvn脚本的命令行选项+命令,且是手动输入的那种
      • 因为maven wrapper早先是用jar包执行maven的,因此用不到MAVEN_CMD_LINE_ARGS,只能通过其规定的MAVEN_CONFIG
    • 等同于maven脚本的MAVEN_ARGS
  • 如果想指定settings.xml、toolchains.xml等的路径,只能通过maven参数
    • 最佳方式是通过环境变量
      • 本地maven就设置MAVEN_ARGS
      • wrapper就设置MAVEN_CONFIG
      • 设置全局-gs -gt,或者 用户 -s -t
      • MAVEN_ARGS=-gs %MAVEN_HOME%\conf\settings.xml -gt %MAVEN_HOME%\conf\toolchains.xml
        • 不考虑迁移问题,其实直接用$HOME目录下的.m2是最好的
      • MAVEN_CONFIG=%MAVEN_ARGS%

.mvn/

  • wrapper(其实很像gradle的wrapper)
  • maven.config
  • jvm.config
  • extensions.xml
  • https://maven.apache.org/configure.html
  • MAVEN_OPTS:Java
  • MAVEN_ARGS:Maven

mvnw

  • mvnw
  • mvnw.cmd
    • 执行maven wrapper将
      • 使用最近的.mvn目录
      • 设置系统属性为
        • 原系统属性
        • 传递给脚本的参数
        • MAVEN_CONFIG
        • maven.properties
      • 将maven.home设置为解压的maven wrapper路径

3.9.6 版的wrapper

  • mvnw:
    • 解压目录变成了MAVEN_USER_HOME/wrapper/dists/{zipBaseName}/{url md5 hex},压缩包被删除了
    • 换成使用powershell5(不能用powershell7,会报错)
    • 且是执行powershell来完成下载等操作,最后执行powershell的输出(输出的是下载好的wrapper的mvn路径)
    • 由于是直接执行mvn脚本,因此不需要MAVEN_CONFIG,而是需要MAVEN_ARGS