【问题标题】:In Maven is there a way to replace properties in the POM file itself like Ant's build.properties file?在 Maven 中,有没有办法像 Ant 的 build.properties 文件一样替换 POM 文件本身的属性?
【发布时间】:2012-03-09 20:47:18
【问题描述】:

我不是在谈论 Maven 属性插件或资源过滤。我希望 Maven 替换 POM 本身的属性。例如,假设我有几个 POM 引用特定依赖项的版本号。我希望能够为每个 POM 加载一个属性文件,然后更改一次值。然后,Maven 将在处理 POM 之前读取属性文件并相应地进行替换。我相信这就是 Ant 一次性完成的方式,然后属性在 build.xml 中是不可变的。

【问题讨论】:

  • 属性插件有什么问题?这就是它的作用。
  • @DaveNewton 获取父母和孩子的 POM。给父 POM 一个版本号,现在在 节点的子 POM 中,使用 ${parent.project.version}。它会抛出一个错误。问题是,在子 POM 可以引用父 POM 属性之前,它必须首先具有该父 POM 的版本。我不想处理这种关系依赖。相反,所有属性都需要“预处理”。

标签: maven properties pom.xml


【解决方案1】:

如果适合您的情况,您可以在命令行上进行属性替换。我在命令行的 pom 中更改了我的项目版本(实际上是通过 NAnt 脚本)。例如:

mvn deploy -Dproject.version=1.00.00.0-Something-SNAPSHOT

您提到要更改父标记内的属性。在 maven 2(不确定 maven 3)中,父标签中的任何内容都不能是属性,而必须是实际值。 Maven 不会评估父标签中的属性。

【讨论】:

    【解决方案2】:

    您询问的是多模块构建,这通常涉及版本号。但简单的答案是:使用 maven 发布插件,这样您就不需要处理版本号。或者您可以使用 versions-maven-plugin 以优雅的方式处理它们的修改。最好不要在 pom 中使用父版本的属性(前提是它会按照您的描述工作)。

    【讨论】:

      猜你喜欢
      • 2020-01-24
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2019-12-09
      • 2016-09-20
      • 2011-04-10
      • 2018-07-14
      相关资源
      最近更新 更多