用 pom.xml 中的值替换占位符名称
Posted
技术标签:
【中文标题】用 pom.xml 中的值替换占位符名称【英文标题】:Replacing placeholder name with value in pom.xml 【发布时间】:2021-02-16 19:25:21 【问题描述】:我正在处理多模块项目,我想在我的 pom.xml 中放置版本的占位符,以便我们的团队成员可以使用命令行构建自己的 war/jar,而无需在父 pom 和子 pom 中硬编码版本。目前的问题是占位符值未在 .m2 文件夹中更新。请帮我解决这个问题。
【问题讨论】:
构建应该由像 Jenkins 这样的 CI 解决方案而不是手动完成...... war/jar 版本对于识别您的开发的特定状态至关重要,这通常与您的开发相关,通过标签您的版本控制由您的 pom 文件中的版本表示?要处理版本,您应该深入研究:maven.apache.org/maven-ci-friendly.html 【参考方案1】:为了更新 pom 文件中的占位符值,可以通过以下两个命令来完成
mvn versions:set -DnewVersion="2.1.1"
mvn versions:commit
完成后,您可以使用常用命令mvn package
或mvn install
触发构建
【讨论】:
这行不通。它会产生不可消耗的 pom 文件...除此之外,hello
版本不是一个好的版本选择。
@Shivam Som,我也这样做了。但是在 .m2 文件夹中,当我们看到 pom 时,占位符没有更新为值
@khmarbaise 感谢您指出这一点。重命名版本。理想情况下,是的,版本控制应该通过发布管道处理,它应该是一个自动化过程,可以通过 Azure DevOps、Jenkins 等工具完成。
@Dev 根据您的要求更新了答案。这也会更新占位符
@ShivamSom 感谢更新,但实际上我们的 pom.xml 中有占位符。主版本我们将从属性标签中获取它,我们将通过 maven 命令 ex 发送固定版本。 您可以将属性放在***项目的 pom.xml 中:
<project>
<!-- other stuff ... -->
<properties>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<jdo.version>3.0</jdo.version>
<datanucleus.version>2.2.1</datanucleus.version>
</properties>
...
</project>
然后在您的模块 pom.xml 中,您可以使用将替换为实际值的变量引用。例如:
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>$datanucleus.version</version>
</dependency>
【讨论】:
以上是关于用 pom.xml 中的值替换占位符名称的主要内容,如果未能解决你的问题,请参考以下文章