[英]Copy Maven pom.xml with version change
抱歉,很长的帖子,但我首先必须解释一下我们的设置:
我们生产了一些核心 jar,这些jar在实际发布的多个其他项目中使用。 现在,我们的许多项目都将Ant与Ivy一起使用。 实际上,所有核心项目严格来说都是与常春藤合作的蚂蚁。
ivy.xml
文件中,版本号是一个属性。 此属性是通用设置的,因为开发人员在我们使用新版本时并未更新此属性。 这使我们所有的项目(包括核心 jar)保持相同的版本号。 <ivy:makepom>
任务执行此操作。 使用此任务时,版本号将自动替换为属性。 pom.xml
嵌入到jar中。 pom-snapshot.xml
POM。 这与pom.xml
相同,但是在版本号之后带有-SNAPSHOT
。 Jenkins进行构建时,它将自动将jar部署到我们的Snapshot存储库。 它使用mvn deploy:deploy-file
和pom-snapshot.xml
文件。 这使开发人员可以在jar正式发布之前对其进行试用。
当开发人员对jar感到满意时,他们可以将该jar提升到我们的Maven Release存储库。 本品采用詹金斯促进插件,在pom.xml
,和mvn deploy:deploy-file
。
现在,我们有一些核心 jar项目正在转移到Maven。 开发人员希望将这个系统保持在原位:每个构建都对我们的Maven存储库进行SNAPSHOT部署,然后开发人员可以通过Jenkins插件将选定的构建部署到我们的Maven存储库。
马上:
pom.xml
复制到target
目录下,并使用mvn deploy:deploy-file
将jar部署到我们的版本库中。 这是由开发人员使用Jenkins中的Promote插件完成的,而不是针对每个版本。 pom.xml
复制到target. I use
下的pom-snapshot.xml
文件中target. I use
每次构建后, target. I use
mvn deploy:deploy-file`将其部署到Snapshot存储库中。 这可行,但是我使用正则表达式来查找pom.xml
的版本号,如果我有一个pom.xml
,其中Super Pom版本(父POM)与pom.xml
的版本相同,则我最终更改了错误的版本。
我想知道是否有一个Maven插件,可让您在更改pom本身的版本号的同时将pom.xml复制到另一个目录。 还是有更好的方法来处理整个问题? 我可以将Artifactory设置为不检查正在部署的内容与pom.xml
之间的版本一致性,但这最终给我们带来了OSGI项目和开发人员无法跟上版本号的问题。
总是有maven-exec-plugin,您几乎可以执行任何操作。 但是我认为这不是一个好主意。 由于Maven始终遵循约定,因此您最好考虑转向使用Maven的便捷过程。 在开发阶段使用SNAPSHOT版本,并准备/执行发行版以将SNAPSHOT版本转换为发行版。 在这里检查maven-release-plugin它可以执行版本更新,VCS更新等。
我发现了maven-version-plugin可以满足我的需求。 我将pom.xml
复制到新目录,在该pom.xml
上运行versions:set
,然后将pom.xml
移至pom-snapshot.xml
并将pom.xml.versionsBackup
移至pom.xml
。
所有这些都在我们的父项目pom.xml
,该项目设置了当前的版本号,Java默认值,站点默认值等,因此各个项目的pom.xml文件仍然干净简洁。 一切都在后台发生。
我对设置不满意,但是它与我们的其他项目及其流程兼容,因此开发人员不必担心任何设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.