处理Maven快照 - 最佳实践
我不是maven guru,但我希望得到一些帮助。处理Maven快照 - 最佳实践
这里的情况:
我在使用Maven 2.我们有一台Nexus仓库,但它仅持有的版本,而不是快照大型分布式开发团队的工作。
的问题是2倍:
- 我每天早晨都使用svn了其他模块,我不下工夫,建立他们,然后建立我的模块
。这是因为我的模块对这些其他模块具有快照依赖性。这需要时间,并且真正加起来,因为每个人都需要这样做才能保持最新状态。
说模块A需要模块B并被声明为快照依赖。模块B更新到更高的版本号,但开发人员忘记更新模块A pom。所以模块A正在使用一个较老的快速启动,它可能不会被识别一段时间,可能只有当它发布的时候。
那么如何最好地处理这些问题呢?
我在一个大的工作,分配使用Maven 2.我们 有一台Nexus仓库,但它只 持有的版本中,没有快照 开发团队。
这就是问题所在。在你的联系中创建一个快照存储库。只要发行版仓库和快照仓库之间存在干净的分离,就没有理由不将快照部署到联结(我通常通过哈德森作业来完成),所以当哈德森作业成功时,仓库中始终存在最新版本)
他们说他们不想在存储库中放入快照。 – FinalFive 2011-02-04 11:45:18
@FinalFive他们错了。这是[单独的
我同意(作为Maven Dev和Nexus Dev)。 Nexus和Maven有意实施快照分离,所以没有理由不在回购协议中。 – 2011-02-07 15:01:03
如果你不想依赖于特殊的(快照)版本(你的问题的第2点),你应该考虑在你的dependecy声明中使用version ranges:
样品从Maven Complete Reference Book:
的JUnit版本大于或等于3.8,但小于4.0
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[3.8,4.0)</version>
<scope>test</scope>
</dependency>
要小心,我觉得快照的处理(在考虑范围内)在maven 2和maven 3之间是不同的。
如果你不想将SNAPSHOTS部署到你的NEXUS存储库(这将是最好的方式),你必须自己构建SNAPSHOTS。也许脚本或连续编译工具如jenkins(易于使用 - 即使在本地计算机上)也可以帮助您。
你实际上提出了两个问题,所以很难选择一个答案。我建议分两个问题。 – 2011-02-04 11:30:24