maven -U clean compile install -e -X -Dmaven.test.skip=true

在持续集成服务器上使用怎样的 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下载所有依赖会是一场噩梦。

项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为:

mvn package -P dev

其中“dev“为环境的变量id, 可以自己定义, 我定义的名称为:dev,qa,pre,prod , 具体在pom.xml中的配置如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> ...... <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>qa</id> <properties> <env>qa</env> </properties> </profile> <profile> <id>pre</id> <properties> <env>pre</env> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> </profile> </profiles> ...... <build> <filters> <filter>config/${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> ...... </build> </project> 

1.profiles定义了各个环境的变量id

2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值

3.resources中是定义哪些目录下的文件会被配置文件中定义的变量替换,一般我们会把项目的配置文件放在src/main/resources下,像db,bean等,里面用到的变量在打包时就会根据filter中的变量配置替换成固定值

参照如下博客URL:

http://www.cnblogs.com/cfrost/p/5491291.html

http://blog.csdn.net/wuxinzaiyu/article/details/8524274

https://www.jianshu.com/p/7e94b7de21a9

转载于:https://www.cnblogs.com/xd502djj/p/11066785.html

maven集成命令-U -B -P -e -X相关推荐

  1. maven正确的集成命令-U-B

    http://healthandbeauty.iteye.com/blog/1618501 在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然,不就是 mvn clean i ...

  2. Maven学习总结(44)——Maven构建时生命周期及其常用集成命令详解

    集成命令:-U -X -B -e clean能够保证上一次构建的输出不会影响到本次构建. 使用deploy而不是install: 构建的SNAPSHOT输出应当被自动部署到私有Maven仓库供他人使用 ...

  3. Maven学习详解(13)——Maven常用命令大全与pom文件讲解

    2019独角兽企业重金招聘Python工程师标准>>> 一.Maven常用命令 1.1.Maven 参数 -D 传入属性参数  -P 使用pom中指定的配置  -e 显示maven运 ...

  4. 个推无法获取个推id_最新个推Android 推送 SDK Maven 集成

    概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来.其 ...

  5. Maven集成指令总结

    clean: clean能够保证上一次构建的输出不会影响到本次构建. 使用deploy而不是install: 构建的SNAPSHOT输出应当被自动部署到私有Maven仓库供他人使用. -U参数: 该参 ...

  6. maven集成spring_Maven集成测试和Spring Restful Services

    maven集成spring 介绍 我的原始博客通过一个非常简单的示例展示了如何分离Maven单元和集成测试. http://johndobie.blogspot.com/2011/06/seperat ...

  7. [白开水]-maven的命令程序mvn脚本分析

    最近公司将svn迁移到git,而且使用maven管理代码仓库,所以小小的研究了一下,为自动化持续集成做知识准备,以下是分析了maven的命令程序mvn:总体感觉与tomcat的启动脚本startup大 ...

  8. jetty服务器原理与maven集成

    jetty服务器原理+MyEclipse下与Maven集成 Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语 ...

  9. java day48【 Maven 介绍 、 Maven 的使用 、Maven 常用命令 、 maven 工程运行调试 、总结】...

    第1章 Maven 介绍 1.1 什么是 Maven 1.1.1 什么是 Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Maven 在美国是一 ...

最新文章

  1. IDEA15 下运行Scala遇到问题以及解决办法
  2. java如何初始化对象_java中对象的初始化过程
  3. php 5.5 链接redis,PHP实例:PHP5.5安装PHPRedis扩展及连接测试方法
  4. 安卓 删除事件弹出消息框_微信更新,朋友圈可以删除好友评论了?网友:杠精终于可以删了...
  5. C# 网络爬虫 抓取“北京标准时间“ 网页请求
  6. Honeywell1900霍尼韦尔 扫描二维码 QT 客户端显示数据
  7. 高数复习(1)--曲线切向与曲面法向的理解
  8. 十年MFC经历认识的Microsoft技术
  9. jquery的插件有哪些
  10. Hadoop大数据解决方案
  11. python读取文本某一行内容
  12. python 马赛克还原_马赛克消除还原工具Depix测试
  13. 宋登高 php,HDwiki百科建站讲座第一期
  14. 微信小程序与HTML5的标签差异梳理
  15. 给工具栏按钮添加图标和文字
  16. STL库:string
  17. 华华跟奕奕玩游戏(数学期望递推式)
  18. android5rom下载,android5.2系统|安卓android5.2系统刷机包正式版 5.2 - 系统天堂
  19. 常见管理学原理、法则
  20. 敏捷ACP.知识总结.错题回顾

热门文章

  1. 树莓派安装Ubuntu MATE及ROS系统
  2. SEO原创文章制作器
  3. pojo类无法注入service解决示例
  4. Python获取电脑硬件信息及状态的实现方法
  5. HDC,CDC,CClientDC,CPaintDC,CWindowDC的区别
  6. [ECMAScript] module、export、import分别有什么作用?
  7. 前端学习(3290):react hook state-hook传入对象+1操作
  8. [html] HTML5的video怎么取消自动播放?
  9. [vue] vue怎么实现强制刷新组件?
  10. [css] 请说说*{box-sizing: border-box;}的作用及好处有哪些?