我需要用pom.xml中的实际值替换所有出现的${project.version}
。
我可以用maven-flatten-plugin
做到这一点,但这将重写整个pom.xml,而不仅仅是替换project.version
。
因为我想使用jgitver-maven-plugin
,所以我不能使用want插件的resolveCiFriendliesOnly
模式。
有没有一种简单的方法来替换整个pom.xml中的一个变量?在flatten插件中有没有另一个(隐藏的)选项来做这件事?
发布于 2021-08-24 14:31:10
有一些接近你想要实现的东西,但可能已经足够好了。但是,这将解析您选择的POM部分中的所有变量。
我使用了resolveCiFriendliesOnly
,因为它是唯一一种可以保留原始POM的模式。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
<pomElements>
<dependencyManagement>resolve</dependencyManagement>
<!-- add more sections to resolve -->
</pomElements>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
现在,您可以在<pomElements>
下添加更多要解析变量的部分。作为resolveCiFriendliesOnly
的一个副作用,变量${revision}
、${sha1}
和${changelist}
将在整个POM文件中解析。
请记住,flatten-maven-plugin
仍然会重写你的POM,也就是说,你可能会得到重新排序的部分,丢失注释,缩进等等。
以下是您可以配置的部分的列表:https://www.mojohaus.org/flatten-maven-plugin/apidocs/org/codehaus/mojo/flatten/FlattenDescriptor.html
如果resolveCiFriendliesOnly
仍然弄乱你的POM,你可以删除flattenMode
,但它会变得疯狂,你必须添加几乎所有可能的部分到<pomElements>
与keep
选项,例如
<pomElements>
<dependencyManagement>resolve</dependencyManagement>
<!-- keep everything else -->
<parent>keep</parent>
<build>keep</build>
<distributionManagement>keep</distributionManagement>
<repositories>keep</repositories>
<pluginRepositories>keep</pluginRepositories>
<profiles>keep</profiles>
...
</pomElements>
https://stackoverflow.com/questions/63674406
复制相似问题