【问题标题】:Replacing placeholder name with value in pom.xml用 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

标签: java maven pom.xml multi-module parent-pom


【解决方案1】:

为了更新 pom 文件中的占位符值,可以通过以下两个命令来完成

 mvn versions:set -DnewVersion="2.1.1"
 mvn versions:commit

完成后,您可以使用常用命令mvn packagemvn install 触发构建

【讨论】:

  • 这行不通。它会产生不可消耗的 pom 文件...除此之外,hello 版本不是一个好的版本选择。
  • @Shivam Som,我也这样做了。但是在 .m2 文件夹中,当我们看到 pom 时,占位符没有更新为值
  • @khmarbaise 感谢您指出这一点。重命名版本。理想情况下,是的,版本控制应该通过发布管道处理,它应该是一个自动化过程,可以通过 Azure DevOps、Jenkins 等工具完成。
  • @Dev 根据您的要求更新了答案。这也会更新占位符
  • @ShivamSom 感谢更新,但实际上我们的 pom.xml 中有占位符。主版本我们将从属性标签中获取它,我们将通过 maven 命令 ex 发送固定版本。 serv-parent${app.version}${subversion}pom
【解决方案2】:

您可以将属性放在顶级项目的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2013-01-24
    • 2012-02-09
    • 1970-01-01
    • 2021-07-17
    • 2013-04-08
    相关资源
    最近更新 更多