【问题标题】:Read custom version config property from a property file and access it in pom.xml从属性文件中读取自定义版本配置属性并在 pom.xml 中访问它
【发布时间】:2017-09-05 03:02:12
【问题描述】:

我正在使用 Maven 项目。我想从属性文件中读取我的版本号并将这个版本变量访问到我的 pom.xml 中,而不是每次在 pom.xml 的 17.3-SNAPSHOT 中更新。因此,当我想在特定的开发冲刺中更新我的版本时,更改应该只存在于属性文件中的版本号属性中,并且能够使用更新的版本构建 jar 文件。所以我想在外部属性文件中创建一个版本配置变量 (例如:/main/resources/version_config.properties)并在 pom.xml 中访问它以进行构建过程。

<dependency>
<group Id>x.x.x</group Id>
<artifact Id>maven-model</artifact Id>
<version>2.0</version>
</dependency>

我不想在版本标记之间使用上述版本值(2.0),而是想从属性文件名 xxx.properties(属性类似,version.config.value=2.0)中获取此值 我尝试了上述解决方案。有人可以帮忙吗?

【问题讨论】:

  • 拥有一个包含依赖版本的外部文件有什么好处,这些依赖版本应该通过在适当的父 pom 中使用 dependencyManagement 块来处理...?
  • 每次我们都不需要更改 pom 文件。我们需要更改特定的更新属性文件而不是这个。

标签: maven


【解决方案1】:

我建议您在可以用作父 Maven 项目的特定 Maven 项目中定义应用程序的版本。

来自Maven documentation "Introduction to the POM" (Example 5)

示例 5

情景

再次给出之前的原始工件 POM,

com.mycompany.app:my-app:1 的 POM

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
</project>

com.mycompany.app:my-module:1 的 POM

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

还有这个目录结构

.
 |-- my-module
 |   `-- pom.xml
 `-- parent
     `-- pom.xml

解决方案

要同时进行项目继承和聚合,您只需申请 所有三个规则。

com.mycompany.app:my-app:1 的 POM

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>../my-module</module>
  </modules>
</project>

com.mycompany.app:my-module:1 的 POM

<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>my-module</artifactId>
</project>

注意:配置文件继承与用于 POM 本身的继承策略相同。

【讨论】:

  • 这是一个很好的解决方案。但我的要求是在 porpetry 文件中创建一个版本配置属性并将其访问到我的 pom.xml
  • 是否有任何其他解决方案可以将我的版本属性从外部属性文件访问到我的 pom.xml 中?
猜你喜欢
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2018-02-10
  • 2012-01-22
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
相关资源
最近更新 更多