【发布时间】:2016-09-08 12:16:08
【问题描述】:
如何为 Maven 提供属性并强制它在 pom.xml 文件中实际替换它们?例如。我有一个“模板” pom.xml,用于部署包和一些依赖项。我希望替换 artifactId、version 和其他变量并上传生成的 pom.xml。
使用命令行参数不起作用,例如mvn clean deploy -DartifactId=someArtifact 确实将 jar 上传到正确的位置,但上传的 pom.xml 包含占位符变量而不是它们的实际值。
具体例子:
POM 文件包含此依赖项定义:
<dependencies>
<dependency>
<groupId>com.avast.melka</groupId>
<artifactId>${runtimeId}</artifactId>
<version>${runtimeVersion}</version>
</dependency>
</dependencies>
我希望 Maven 使用包含以下内容的 POM 部署相应的包:
<dependencies>
<dependency>
<groupId>com.avast.melka</groupId>
<artifactId>actualIdValue</artifactId>
<version>1.0.42</version>
</dependency>
</dependencies>
我该怎么做?我能找到的最接近的东西是 http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html - 但这涉及替换资源文件中的值,而不是 POM,对我来说这似乎是一个不同的用例。
【问题讨论】:
-
我认为没有简单的方法可以做到这一点。
maven-release-plugin对版本做了类似的事情......我想你可以根据它的作用创建自己的插件。 -
为什么要部署的工件需要 pom 文件模板?为什么不创建并使用它..除此之外,为什么不通过
mvn deploy使用 maven 构建? -
我想在通用 CI 构建作业中自动使用它,该作业可以由我公司的不同团队实例化并定制以生成不同 GAVC 和依赖项的 maven jar。而不是每个团队都必须手动创建自己的 POM.xml,我想让他们只在实例化构建作业参数时自定义它。除此之外,即使所有变量都“一成不变”,我仍然需要通过构建提供
version(第三个数字对应于构建号)。 -
我已经阅读了一些关于 maven 原型的内容,似乎它们可能是我正在寻找的东西,每个构建都将运行
archetype:generate,然后在创建的 pom.xml 文件上运行“标准”maven。 -
嗨@MartinMelka,如果这个问题得到解决。您能否发布更新的 pom 文件/答案。