在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然,不就是 mvn clean install 么?事实上比较好的集成命令会稍微复杂些,下面是一些总结:

不要忘了clean: clean能够保证上一次构建的输出不会影响到本次构建。
使用deploy而不是install: 构建的SNAPSHOT输出应当被自动部署到私有Maven仓库供他人使用,这一点在前面已经详细论述。
使用-U参数: 该参数能强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态,如果没有该参数,Maven默认以天为单位检查更新,而持续集成的频率应该比这高很多。
使用-e参数:如果构建出现异常,该参数能让Maven打印完整的stack trace,以方便分析错误原因。
使用-Dmaven.repo.local参数:如果持续集成服务器有很多任务,每个任务都会使用本地仓库,下载依赖至本地仓库,为了避免这种多线程使用本地仓库可能会引起的冲突,可以使用-Dmaven.repo.local=/home/juven/ci/foo-repo/这样的参数为每个任务分配本地仓库。
使用-B参数:该参数表示让Maven使用批处理模式构建项目,能够避免一些需要人工参与交互而造成的挂起状态。
综上,持续集成服务器上的集成命令应该为 mvn clean deploy -B -e -U -Dmaven.repo.local=xxx 。此外,定期清理持续集成服务器的本地Maven仓库也是个很好的习惯,这样可以避免浪费磁盘资源,几乎所有的持续集成服务器软件都支持本地的脚本任务,你可以写一行简单的shell或bat脚本,然后配置以天为单位自动清理仓库。需要注意的是,这么做的前提是你有私有Maven仓库,否则每次都从Internet下载所有依赖会是一场噩梦。

最新文章

  1. CString转换为LPSTR和LPSTR转化为CString
  2. Linux搜索文件夹下所有文件中字符串
  3. 关于comparable与comparator的用法(即自定义集合框架用法 )
  4. nyoj-----42一笔画问题
  5. 【面试题041】和为s的两个数字VS和为s的连续正数序列
  6. Java System类看到的一点小记
  7. 马士兵Servlet&Jsp学习
  8. codeforces 632C. The Smallest String Concatenation 排序
  9. OpenCV配置使用版
  10. erase-credentials配置
  11. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
  12. clisp, scheme 和 clojure 初学习
  13. Sping 里面的适配器模式的实现
  14. Netty 学习系列
  15. idftp
  16. jenkins原理
  17. shell基础:环境变量
  18. Python基础(一)_数据类型、条件判断、循环、列表
  19. Spring boot @Autowired注解在非Controller中注入为null
  20. Win10系列:JavaScript访问文件和文件夹

热门文章

  1. 【题解】 [HNOI2004]宠物收养场(Splay)
  2. Redis的持久化数据
  3. NameError: name 'reload' is not defined
  4. OpenStack 网络服务 Neutron 私有网络构建(十九)
  5. properties编程示例
  6. JAVA 位操作学习
  7. 兼容 IE6+ 获取图片大小
  8. [转载]HTML5 真的会消灭原生App吗?
  9. [原] eclipse 无法找到 run as junit
  10. mac 无法验证副本