使用maven进行多模块开发时,当我模块之间有相关的依赖关系,并且两个模块都还不稳定需要频繁的做更新的时候,我们往往会把模块的版本设置为SNAPSHOT,如:goingUtils-1.1-SNAPSHOT,当goingUtils-1.1模块作了修改以后,它所依赖的模块goingBiz-1.2就可以通过MAVEN获取到最新修改以后的包文件。
获取方式如下:
goingUtils-1.1-SNAPSHOT的代码做完修改,通过deploy或持续集成将最新的包文件上传到仓库中。
这时,仓库将会用时间戳替换掉SNAPSHOT,如:goingUtils-1.1-20110127.090218-81。
并且,会在仓库中创建一个xml文件,大概内容如下:
<?xml version="1.0" encoding="UTF-8"?> <metadata> <groupId>cn.com.going.common</groupId> <artifactId>goingUtils</artifactId> <version>1.1-SNAPSHOT</version> <versioning> <snapshot> <timestamp>20110130.051633</timestamp> <buildNumber>82</buildNumber> </snapshot> <lastUpdated>20110130051633</lastUpdated> </versioning> </metadata>
其中的lastUpdated记录了仓库中goingUtils-1.1-SNAPSHOT最新的包是goingUtils-1.1-2011013.0051633-82.jar.
如果你的业务模块goingBiz中要获取最新的goingUtils模块包,可以使用
mvn -U
来获取模块对最新goingUtils模块的使用。
如果不使用mvn -U命令对最新SNAPSHOT包更新的话,maven会每天检查一次更新(由仓库配置的updatePolicy控制).
<repositories> <repository> <id>mes-snapshots</id> <url>http://10.63.13.139/maven2/public-snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>interval:60</updatePolicy> </snapshots> </repository> </repositories>
如上表示,对SNAPSHOT仓库每隔一个小时检查一下是否有更新。