坐标
在maven项目中使用涉及到相关工具只需要在pom中加入需要的坐标即可,但是什么坐标呢?我理解的坐标就是jar包在中央仓库中的身份证,通过坐标可以确定唯一的jar包,避免使用错误,坐标中主要包括一下内容:
groupId:定义当前Maven项目隶属的实际项目。首先因为Maven中有模块的概念,其次一般一个组织下会包括多个项目,如果maven项目定义到组织级别,会比较难区分。一般groupId使用域名+实际项目。
artifactId:定义实际项目中的一个Maven模块,推荐做法把实际项目名称作为前缀+模块名称,这样方便寻找实际构件。
version:定义该maven项目当前所处的版本,其中在研发过程使用快照(SNAPSHOT)版,线上一般使用稳定版保证线上的稳定。
packaging:该元素定义了Maven的项目打包方式。一般情况下打包与生成构建的文件的扩展名对应,当不定义packaging时候,默认生成jar。(非必填)
版本管理详解
首先清楚两个概念:版本管理和版本控制。
版本管理指项目整体版本的演变过程管理,从1.0->1.0.1->2.01。
版本控制指借助版本控制工具(git,svn)追踪代码的每一个变更。
何为版本管理?
在项目开发过程,大家使用快照版本,maven利用这种方式智能处理特殊的版本,解析项目的最新快照,使用快照版本促进团队内部的交流,用于开发成员中使用。当系统对外外部的时候需要提供一个稳定的版本,使用该版本永远只能定位到唯一的构件,不随时发生变化,当稳定版发布后,快照转入一个新的版本中。
理想稳定版本有如下特点
所有自动化测试应当全部通过
项目中没有配置任何快照版本的依赖
项目中没有配置任何快照版本的插件
项目中包含的所有代码全部上传到版本控制系统中
版本号定义约定
<主版本>.<次版本>.<增量版本>-<里程碑>
主版本:表示项目有重大的架构变更。
次版本:有较大范围的功能的增加和变化,以及Bug修复
增量版本:有重大Bug的修复
里程碑:版本中的里程碑
一般来说主版本和次版本都会有,其他的视情况而定。