gpt4 book ai didi

java - 替换pom.xml中的参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:18 25 4
gpt4 key购买 nike

如何为 Maven 提供属性并强制它在 pom.xml 文件中实际替换它们?例如。我有一个"template"pom.xml,用于部署包和一些依赖项。我想要替换 artifactIdversion 和其他变量,并上传生成的 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,对我来说,这似乎是一个不同的用例。

最佳答案

您可以使用替换插件。该插件的更详细使用方法请上网查阅。

警告 1: 我不认为替换artifactId 是一个可维护的策略。但这是你的选择。

警告 2: 仅在配置文件中定义此插件,该配置文件仅在此特定版本上激活。否则这个插件执行会继承到子项目,这可能是一个坏主意。

你的配置应该类似于:

<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<executions>
<execution>
<id>yourId</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<replacements>
<replacement>
<token><![CDATA[<version>[$][{]runtimeVersion[}]</version>]]></token>
<value><![CDATA[<version>1.0.42</version>]]></value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>

关于java - 替换pom.xml中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com