前言
在上篇文章中(项目管理利器(Maven)你真的了解吗?让我来帮你入门学习)我已经详细的对Maven配置文件(setting.xml和pom.xml)标签含义做了说明,这篇文章我将着重将讲解Maven的生命周期、Maven的版本控制规则以及SNAPSHOT和RELASE版本区别这三块。
Maven的生命周期
众所周知,在我们没有使用Maven的时候我们其实仍然需要对项目进行项目进行编译、打包、测试等等。所以Maven非常方便地整合一套适合于所有项目的构建生命周期,并将它们统一规范。具体步骤包括清理、初始化、编译、测试、打包、集成测试、验证、部署和生成站点,其中清理、编译、测试、打包是我们开发人员最经常使用的步骤。
Maven拥有三套独立的生命周期,它们分别是 clean、default 和 site(详细可以参考:http://c.biancheng.net/view/4899.html)。clean 生命周期的目的是清理项目;default 生命周期的目的是构建项目;site 生命周期的目的是建立项目站点。
这里给大家详细解释一下我们可能用得到的生命周期:
- clean:清除target目录下的class文件和本地仓库jar包
- validate:检查maven项目的依赖是否全部可用
- compile:项目编译
- test:运行项目中的测试用例,可跳过
- package:打包编译完的文件为jar包或者war包
- verify:检查打完的包是否有效且符合标准
- install:将包发布到本地仓库
- site:生成项目的站点文档
- deploy:将本地仓库的包发布到远程仓库
执行Maven的生命周期一般可以使用mvn命令或者IDE中的工具。
Maven的版本控制规则
一般情况下软件版本号有四部分组成,版本号格式为:<主版本>.<次版本>.<增量版本>-<里程碑版本>。
- 第一部分为主版本号,重大更新
- 第二部分为次版本号,功能添加更新&大量的bug修复
- 第三部分为修订版本号,bug修复&功能微调
- 第四部分为里程碑版本(内部测试不同阶段版本)
其中第四部分为可选部分一般情况下正式可以直接不带里程碑版本或者用Release结尾,例如:1.0.0/1.0.0-Release,而里程碑版本号又分为:
- Alpha: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
- Beta: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。
- M: 又叫里程碑版本,表示该版本较之前版本有功能上的重大更新。
- RC: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。
- Release: 该版本意味着“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
一般情况下如果要发hotfix我个人喜欢使用RC1…N来说明这是hotfix版本,例如:1.0.0-RC1、1.0.0-RC2,而我们在测试阶段的话打的包都是SNAPSHOT(快照)版。
SNAPSHOT和RELASE版本区别
上面刚刚好提到了SNAPSHOT版本和RELEASE版本的是有区别的,这里我再详细说一下这两者的区别是什么!
Snapshot版本是临时快照版本,主要用于开发时解决模块间的依赖更新问题,Snapshot版本可以让你的依赖始终保持最新的(如果不是最新的,删除本地仓库中的jar包重新下一次/或者修改仓库本地缓存策略);Release版本是团队向外发布的稳定版本,这个版本构件所对应的构件文件是固定的。就算后期有更多的功能要继续开发,完成后也不会改变当前发布版本的内容。
还有一点,如果我们需要发布RELEASE版本的构件,RELEASE版构建需要满足以下几个特点:
- 通过所有的测试用例
- 项目中没有Snapshot版的依赖
- 项目中没有Snapshot版的插件
- 所有的代码资料都提交到版本控制系统(Git)上,最好对应的版本加上tag标签
Jar包上传到私服
MAVEN会根据上传的版本号中是否存在-SNAPSHOT来判断是否是快照版
仓库上传:mvn deploy:deploy-file -DgroupId=com.shuwen.mgc -DartifactId=mgc-dispatch-gate-web -Dversion=1.0.0-SNAPSHOT -Dpackaging=war -Dfile=pom.xml -Durl=http://localhost:8081/repository/maven-snapshots/ -DrepositoryId=maven-snapshots
本地install:mvn clean install -Dmaven.test.skip=true
最后注意提醒一下,一般情况下MAVEN是一天检查一次更新(daily策略),如果我们要实时的更新依赖的SNAPSHOT版本我们可以这么做,idea及时更新SNAPSHOT包;
如果要打包,依赖中存在SNAPSHOT包需要强制更新SNAPSHOT包,可以使用mvn -U进行强制更新检测。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。