有一些接近您想要实现的目标,但可能已经足够好了。但是,这将解决您选择的 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
作为, variables和的副作用${revision}
,将在整个 POM 文件中解析。${sha1}
${changelist}
请记住,这flatten-maven-plugin
仍然会重写您的 POM,即您可能会重新排序部分、丢失评论、缩进等。
这是您可以配置的部分列表:https:
//www.mojohaus.org/flatten-maven-plugin/apidocs/org/codehaus/mojo/flatten/FlattenDescriptor.html
如果resolveCiFriendliesOnly
仍然弄乱你的 POM,你可以删除flattenMode
,但它会变得疯狂,你必须添加几乎所有可能的部分到<pomElements>
withkeep
选项,例如
<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>