Maven版本管理思路

我们已经使用Maven一年半了,但是Maven多项目之间的版本管理还一直没有起色。这里提一提我个人的思路,希望大家能够来完善这个思路。其中 有些借鉴spring security项目的思路(通过浏览其svn各个版本提交记录得来),也没有时间深入研究;如果谁有时间,可以深入研究一番。

以mysoa项目为例,项目开始时,我们应该有这样的项目目录结构:

mysoa-1.0-snapshot
|-- mysoa-core-1.0-snapshot
|-- mysoa-security-1.0-snapshot
|-- mysoa-task-1.0-snapshot
|-- mysoa-attachment-1.0-snapshot
|-- mysoa-email-1.0-snapshot

之所以创建snapshot项目,是因为项目在开发过程中,可能会被其他项目依赖。

这几个项目之间的依赖关系很明显,security依赖于core,而其他几个项目依赖于core和security。

我们首先要稳定的是core项目,假定我们发布mysoa-core-1.0,则项目结构变更为

mysoa-1.0-snapshot
|-- mysoa-core-1.0
|-- mysoa-security-1.0-snapshot
|-- mysoa-task-1.0-snapshot
|-- mysoa-attachment-1.0-snapshot
|-- mysoa-email-1.0-snapshot

这时,所有项目都更改为依赖于mysoa-core-1.0

  • 当我们要开始开发mysoa-core-1.1时,我们先将mysoa-core-1.0发布到30.1的repository中,
  • 然后将该项目版本改为mysoa-core-1.1-snapshot,其他项目还是依赖于mysoa-core-1.0,这样直到mysoa-core-1.1开发完成并发布。
  • 如 果mysoa-core-1.1开发过程中,mysoa-security-1.0-snapshot需要依赖于这个1.1版本,则将security更 改为依赖于mysoa-core-1.1-snapshot,mysoa-core-1.1发布后,可以将这个依赖更改为mysoa-core-1.1。

同样,mysoa-security-1.0发布时,也是先将其版本号的snapshot拿掉,发布到30.1的repository中;然后如果有需要开发1.1版本,则更改其版本号为1.1-snapshot。

有几点很重要:

  • 所有非snapshot的项目都不允许提交更改内容!(即发布版本后不允许修改,所有修改都在后续版本中进行)
  • 开发一个项目之前,都必须为其分配一个版本号,开发过程中我们使用这个版本号的snapshot版本
  • 要发布一个项目的一个版本,这个项目的当前版本必须依赖于非snapshot的项目版本
  • 发布一个项目需要将其发布到团队共享的maven repository中(30.1)
  • 一个项目所依赖的其他项目并不需要是最新版本的
  • 所有项目的新版本都应该兼容之前的版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值