• mvnw是什么(Maven Wrapper/Maven保持构建工具版本一直的工具)


    背景

    Maven是一款非常流行的Java项目构建软件,它集项目的依赖管理、测试用例运行、打包、构件管理于一身,是我们工作的好帮手,maven飞速发展,它的发行版本也越来越多,如果我们的项目是基于Maven构件的,那么如何保证拿到我们项目源码的同事的Maven版本和我们开发时的版本一致呢,可能你认为很简单,一个公司嘛,规定所有的同事都用一个Maven版本不就万事大吉了吗?一个组织内部这是可行的,要是你开源了一个项目呢?如何保证你使用的Maven的版本和下载你源码的人的Maven的版本一致呢,这时候mvnw就大显身手了。

    mvnw全名是Maven Wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的Maven版本,当用户执行mvnw clean 命令时,发现当前用户的Maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。

    为项目添加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(推荐使用这种)

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

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

    使用的注意事项

    1、由于我们使用了新的Maven ,如果你的settings.xml没有放在当前用户下的.m2目录下,那么执行mvnw时不会去读取你原来的settings.xml文件

    2、在mvnw.bat中有如下的一段脚本:if exist "%M2_HOME%inmvn.cmd" goto init,意思是如果找到mvn.cmd就执行初始化操作,但是Maven早期版本不叫mvn.cmd,而是叫mvn.bat,所以会报"Error: M2_HOME is set to an invalid directory"错误,改成你本地的maven的匹配后缀就好了。

    测试工程:https://github.com/easonjim/5_java_example/tree/master/mvnw/testproject

    参考:

    https://github.com/takari/maven-wrapper(官网)

    http://www.javacoder.cn/?p=759(以上内容转自此篇文章)

  • 相关阅读:
    一起谈.NET技术,.NET分布式架构开发实战之一 故事起源 狼人:
    JS替换节点
    mysql数据库的简单语句的介绍(1)
    JS对img进行操作
    POJ 1006 Biorhythms 数论(孙子定理)
    Tomcat与Jetty插件 配置根路径指定项目
    [置顶] cocos2dx 2.x版本之win32 window移植android 环境搭配 只用NDK 超级详细 android 环境搭配
    调频广播六十年
    ajax两个网页实现完美的 分页功能
    Cocos2dX数据、动作、消息的基本操作
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7620085.html
Copyright © 2020-2023  润新知