我正在开展一个快速项目,其中,我正在直接研究一个不断变化的模块。其他人直接依赖于模块,因此,我将公共接口存根并将其部署到我们的本地Nexus存储库0.0-SNAPSHOT
以供使用。
现在我已经完成了模块的第一次迭代,我试图重新部署更新的工件。阅读有关快照的内容,其他人声称快照应代表当前的主干。这是真的吗?
Maven在重新部署时会自动增加我的快照版本 - 所以,从0.0-SNAPSHOT
开始,我仍然只在0.0-SNAPSHOT
,它是相同快照的迭代3或4。我什么时候应该转到0.1-SNAPSHOT
?是否有一个插件可用于自动化版本更改,而不是手动编辑我的pom?
在集成测试和我们的第一个系统版本1.0-RELEASE
的部署之后,我的模块应该如何进展?我应该将模块移到1.0-SNAPSHOT
并继续吗?是否应该遵循一种方法,还是由开发人员自行决定?
答案 0 :(得分:6)
X.Y.Z-SNAPSHOT表示法识别导致释放X.Y.Z的临时版本,因此除非您释放X.Y.Z,否则通常不会从X.Y.Z-SNAPSHOT移动到X.Y.Z + 1-SNAPSHOT。如果您遵守此约定,maven-release-plugin可以帮助您完成发布过程。
请注意,最常见的Maven约定使用3个版本的标识符,没有任何后缀(即没有-RELEASE)。后缀通常用于区分同一版本的变体。
Maven是关于约定的,所以如果没有阅读它,你几乎没有机会走得很远:book是一个很好的起点。
答案 1 :(得分:3)
要更新您的POM版本而不需要手动更新,您可以查看Maven Release plugin(虽然我自己写了一个小脚本来进行POM更新,因为我发现Release插件不适合我的工作流动)
然后出现您的版本号问题。这更像是一个发布程序问题。通常,计划版本由版本号中的主要版本或次要版本的增量表示。 SNAPSHOT版本表示某些版本正在进行中。例如,我更愿意为你的情况做这样的事情:
假设我计划将第一次迭代发布为0.1,然后我将在SCM(例如SVN中的中继)中使用0.1-SNAPSHOT作为版本制作我的头干。这表示所有开发实际上都有助于发布0.1版本。完成后,我将POM版本从0.1-SNAPSHOT更新为0.1,执行版本0.1的实际版本(包括版本分支,标记,部署工件),然后将POM版本更改为下一个计划版本的SNAPSHOT(对于例如,0.2-SNAPSHOT)。
类似地,在释放1.0(或者在您的示例中为1.0-RELEASE)之后,应该将头干中的POM版本更新为下一版本的快照,例如1.1-SNAPSHOT。
请记住,如果该版本实际发布,则不应再有某些版本的SNAPSHOT。
答案 2 :(得分:0)
了解maven解释SNAPSHOTS的方式是清除您可能遇到的任何疑问。
摘自http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-syntax.html
例如,如果您的项目的版本为“1.0-SNAPSHOT”并且您将此项目的工件部署到Maven存储库,则Maven会将此版本扩展为“1.0-20080207-230803-1”(如果您要部署发布于2008年2月7日晚上11:08 UTC
首先,我建议您坚持使用maven惯例,并将您的版本更改为0.1
maven archetype:generate
建议。
因此,SNAPSHOT
可以帮助其他人轻松了解您的活动项目。在每次编译时,他们的项目将检查SNAPSHOTS
个依赖项的新版本(基于它们在.m2
目录上的伪日期时间版本)。
当您完成0.1-SNAPSHOT
的工作后,您需要部署0.1
并开始0.2-SNAPSHOT
或1.0-SNAPSHOT