maven 一些高级用法命令

  • 发布本地jar到私服 命令

    mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=D:\Downloads\OJDBC-Full\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -DrepositoryId=releases -Durl=http://192.168.0.168:8081/repository/maven-releases/

  • 持续集成服务器上的集成命令

    打包jar

    mvn clean install -B -e -U -Dmaven.repo.local=/home/juven/ci/foo-repo/

    发布jar到私服

    mvn clean deploy -B -e -U -Dmaven.repo.local=/home/juven/ci/foo-repo/

    在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然,不就是 mvn clean install 么?事实上比较好的集成命令会稍微复杂些,下面是一些总结:
    1. 不要忘了clean: clean能够保证上一次构建的输出不会影响到本次构建。
    2. 使用deploy而不是install: 构建的SNAPSHOT输出应当被自动部署到私有Maven仓库供他人使用,这一点在前面已经详细论述。
    3. 使用-U参数: 该参数能强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态,如果没有该参数,Maven默认以天为单位检查更新,而持续集成的频率应该比这高很多。
      使用-e参数:如果构建出现异常,该参数能让Maven打印完整的stack trace,以方便分析错误原因。
    4. 使用-Dmaven.repo.local参数:如果持续集成服务器有很多任务,每个任务都会使用本地仓库,下载依赖至本地仓库,为了避免这种多线程使用本地仓库可能会引起的冲突,可以使用-Dmaven.repo.local=/home/juven/ci/foo-repo/这样的参数为每个任务分配本地仓库。
    5. 使用-B参数:该参数表示让Maven使用批处理模式构建项目,能够避免一些需要人工参与交互而造成的挂起状态。
    6. 使用-X参数:开启DEBUG模式。
  • pom-config 插件使用 (自定义的maven插件)

    修改pom properties 里节点的版本号
    mvn com.zy:pom-config:1.0.1:pom-config -Dparams="hiip-user-api.version=0.44.1-SNAPSHOT"

  • 修改全模块版本号

    • A 执行以下命令 mvn versions:set -DoldVersion=* -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true 如果还有没有修改到的。执行下方的命令重试。 mvn versions:update-child-modules

    • B 执行编译打包的命令 mvn clean install -DskipTests

    • C 查看依赖树的版本是否修改成功 mvn dependency:tree -Dverboss -Dincludes=${project.groupId}😒

    • D 失败就回退 mvn versions:revert

    • E 成功则提交 mvn versions:commit

    • 参数默认值说明

      指令 说明
      allowSnapshots false 是否更新-snapshot快照版
      artifactId $ 指定artifactId
      generateBackupPoms true 是否备份pom文件
      groupId $ 指定groupId
      newVersion 设置的新版本号
      nextSnapshot false 更新版本号为下一个快照版本号
      oldVersion $ 指定需要更新的版本号可以使用缺省‘*’
      processAllModules false 是否更新目录下所有模块无论是否声明父子节点
      processDependencies true 是否更新依赖其的版本号
      processParent true 是否更新父节点的版本号
      processPlugins true 是否更新插件中的版本号
      processProject true 是否更新模块自身的版本号
      removeSnapshot false 移除snapshot快照版本,使之为release稳定版
      updateMatchingVersions true 是否更新在子模块中显式指定的匹配版本(如/项目/版本)。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

posted @ 2020-06-02 15:55  就这样火了  阅读(607)  评论(0编辑  收藏  举报