元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • Redis

  • Nginx

  • Kafka

  • Shardingsphere

  • Otter

  • nexus

    • mvnw简介
    • 中间件
    • nexus
    元月
    2024-06-21
    目录

    mvnw简介

    # 一、前言

    在阅读shardingsphere源码过程中,出现编译错误,查阅官方文档,需要执行下面的命令

    ./mvnw -DskipITs -DskipTests clean install -T1C
    #更快速的方式
    ./mvnw clean install -Prelease -T1C -DskipTests -Djacoco.skip=true -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true -B
    
    1
    2
    3

    它有什么用呢?它和mvn有什么区别呢?本文将会介绍mvnw的相关知识

    # 二、什么是 Maven Wrapper

    mvnw 全名是Maven Wrapper, 它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,用你期望的版本来执行mvn命令

    #查看版本
    $ ./mvnw --version
    Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
    Maven home: C:\Users\yuanyue\.m2\wrapper\dists\apache-maven-3.8.7-bin\1ktonn2lleg549uah6ngl1r74r\apache-maven-3.8.7
    Java version: 11.0.19, vendor: Oracle Corporation, runtime: D:\software\Java\jdk-11
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    1
    2
    3
    4
    5
    6
    7

    Maven Wrapper 官网 (opens new window)

    # 三、Maven Wrapper 使用场景

    设想一下,如果所在的团队同时维护多个项目,不同的项目使用的 JDK 版本不相同,使用的 Maven 版本也不相同,那么为了支持多项目开发,为了构建运行效果一致,你可能需要在本地管理多个 Maven 版本,这会非常繁琐,而 Maven Wrapper 可以轻松的解决这个问题。

    Maven Wrapper 的引入解决了下面几个问题:

    • 版本一致性:通过在 mvnw 配置中指定 Maven 版本,确保所有开发人员和持续集成环境使用相同的 Maven 版本。
    • 简化设置:新团队成员或 CI 环境不需要预先安装 Maven,直接运行 mvnw 命令就如安装了 mvn 一样,从而简化了项目的初始设置和配置。
    • 跨平台:Wrapper 是跨平台的,无论是在 Windows 还是在 Unix-like 系统上,都可以以相同的方式执行。

    使用 Maven Wrapper 的好处简单的说,可以是 “如果想要使用不同的 Maven 版本进行项目构建,只需在项目中存放一个脚本文件,而不是在本地安装不同的 Maven 版本”。

    # 四、如何使用 Maven Wrapper

    在项目目录下执行如下命令:

    mvn -N wrapper:wrapper
    
    #或也可以指定 maven 版本
    mvn -N wrapper:wrapper -Dmaven=3.8.7
    
    1
    2
    3
    4

    选项 -N 参数表示非递归,因此 Maven Wrapper 只会在项目的当前目录生成,如果项目中有子模块,那么则不会作用到子模块中。

    生成的目录结构

    ├── .mvn -> 关注
    │   └── wrapper
    │       ├── maven-wrapper.jar -> 关注
    │       └── maven-wrapper.properties -> 关注
    ├── mvnw    -> linux 命令文件
    ├── mvnw.cmd	-> windows 命令文件
    
    1
    2
    3
    4
    5
    6

    生成的文件说明

    1. mvnw 和 mvnw.cmd 脚本,分别用于 Unix/Linux 和 Windows 环境。

    2. mavenwrapper.jar 是 Maven Wrapper 运行时所需的 Jar 文件。

    3. maven-wrapper.properties 是配置文件,可以配置 Maven 版本,内容如下

      distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip
      wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
      
      1
      2

    查看版本

    $ ./mvnw --version
    Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
    Maven home: C:\Users\yuanyue\.m2\wrapper\dists\apache-maven-3.8.7-bin\1ktonn2lleg549uah6ngl1r74r\apache-maven-3.8.7
    Java version: 11.0.19, vendor: Oracle Corporation, runtime: D:\software\Java\jdk-11
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    1
    2
    3
    4
    5
    6

    # 五、FAQ

    # 5.1、执行mvnw命令时,发现控制台输出日志中,都是从maven中央仓库拉取依赖,而不是本地仓库?

    问题原因

    mvnw它使用的是maven-wrapper.properties中指定版本的maven用于构建项目 , 如果更改了默认仓库地址${user.home}/.m2/repository,则会使用该版本的settings.xml配置文件,当我们执行./mvnw --version命令,可以看到指定的maven所在的目录

    $ ./mvnw --version
    Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
    Maven home: C:\Users\yuanyue\.m2\wrapper\dists\apache-maven-3.8.7-bin\1ktonn2lleg549uah6ngl1r74r\apache-maven-3.8.7
    Java version: 11.0.19, vendor: Oracle Corporation, runtime: D:\software\Java\jdk-11
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    1
    2
    3
    4
    5
    6

    解决方法

    方法一:

    使用默认仓库地址

    方法二:

    替换文件apache-maven-3.8.7\conf\settings.xml中的配置,换成自己使用的仓库地址即可

    参考:

    Maven Wrapper 官网 (opens new window)

    #maven
    otter二次开发-支持按目标端主键索引Load数据

    ← otter二次开发-支持按目标端主键索引Load数据

    最近更新
    01
    otter二次开发-支持按目标端主键索引Load数据
    08-03
    02
    gor流量复制工具
    06-03
    03
    BeyondCompare比较工具
    03-16
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式