zoukankan      html  css  js  c++  java
  • Maven 命令行打包 和 pom.xml的常用配置

    maven 命令行打包

    mvn -v, --show-version

    mvn -h, --help

    使用 help 命令可以看到 maven 命令的帮助文档,下面主要介绍两个常用的指令 —— D 和 P

    mvn -D, --define <arg>

    mvn -DpropertyName=propertyValue clean package 可以用来临时定义属性和值。如果 pom.xml 中已经有该属性,那么会替换掉 pom.xml 中的值。

    如果需要定义多个变量,可以用空格分隔
    mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package

    当然这个属性也可以直接在 pom.xml 文件下配置

    mvn -P, --activate-profiles <arg>

    P 表示 Profiles 配置文件,需要在 <profile> 标签中指定 <id> 才能用 -P 使之生效。

    假如 pom.xml 如下

    mvn参数-N、-U理解

      1. 关于-N

        -N,--non-recursive Do not recurse into sub-projects

        意思是,不递归到子项目(子模块)。

        举例:

        一个父项目下Father面有3个子项目A、B、C,都生成jar包,则有Father.jar、A.jar、B.jar、C.jar;
        这个时候A项目依赖了B、C项目。

        此时如果使用mvn clean install -N,则只会把Father.jar安装到本地仓库(~/.m2/repository),
        而不会安装其他三个包

        造成的问题是,如果你此时使用如下命令拷贝依赖包,则会报错:说找不到依赖包B.jar/C.jar

        mvn dependency:copy-dependencies -DoutputDirectory=$WORKSPACE/dependencies
        
      2. 关于-U

        -U,--update-snapshots Forces a check for missing releases
        and updated snapshots on remote repositories

        意思是:强制刷新本地仓库不存在release版和所有的snapshots版本。

        • 对于release版本,本地已经存在,则不会重复下载
        • 对于snapshots版本,不管本地是否存在,都会强制刷新,但是刷新并不意味着把jar重新下载一遍。
          只下载几个比较小的文件,通过这几个小文件确定本地和远程仓库的版本是否一致,再决定是否下载

    那么打包时执行 mvn clean package -P prod 将只激活 prod 环境的 profile 配置(也就是说此时 test 和 dev 的配置不会生效)

    mvn package 与 mvn install 的区别

    mvn 打包插件的执行顺序

    我这里用的是 maven 3.1.1 打包 android 项目

     

    实战

    案例一

    使用 mvn 打包,并跳过测试,然后生成文档,使用 dev 配置

     

    案例二

    将模块A生成的 jar,复制到模块B的 libs 目录下。
    安装模块到 maven 仓库。

    默认情况下,cmd 的命令发起调用后就立即返回了。而 CALL 是一个调用外部批处理程序的指令,类似于函数调用的执行逻辑,它会一直等到函数执行结束才返回

    pom.xml的常用配置

    denpendencyManagement 与 pluginManagement

    denpendencyManagement是用于管理项目jar包依赖,pluginManagement是用于管理plugin。
    它们的作用是列出依赖的jar包或者plugin包,让子pom来决定是否引用。

    对不同的配置赋予不同的属性

    activation 元素用来指定激活条件。当没有指定条件,然后指定 activeByDefault 为 true 的时候,就表示没有指明 profile 的情况下默认激活。也就是说 mvn package 将使用 dev 的配置,而 mvn package -P prod 的时候使用的才是 prod 的配置。

    根据不同配置使用不同的源文件

    然后在 profiles/dev 目录下新建 java 文件

     

    执行打包命令 mvn clean package -DskipTests -Pdev,就可以看到 /profiles/dev 目录下的 java 文件全部被复制到了 /src/com/companyName/global 目录下了,并且 isDebugEnable 的值也被替换了。

    配置项说明:

    • parse 用来指明具体在 maven 的哪个生命周期执行该任务

    maven 的生命周期表

     

    • inherited 用来指明 execution 是否传递到子 pom.xml 里
    • filtering属性用来表示资源文件中的 “EL表达式占位符” 是否需要被替换,true为需要替换
  • 相关阅读:
    Atlas学习手记(17):使用FilteredTextBox过滤字符
    Atlas学习手记(22):使用行为增强用户界面(二):Floating Behavior
    Atlas学习手记(27):JavaScript面向对象的扩展(一):命名空间Namespace
    Atlas学习手记(20):客户端简单控件示例
    Atlas学习手记(19):客户端简单控件介绍
    Atlas学习手记(15):使用RoundedCorners为控件加上圆角效果
    bootstraptable中的checkbox 操作事件
    Mysql: Table 'name' is specified twice, both as a target for 'UPDATE' and as a separate source for d
    ASP.NET配置KindEditor富文本编辑器
    js如何获取kindeditor的值
  • 原文地址:https://www.cnblogs.com/lingxia/p/13886313.html
Copyright © 2011-2022 走看看