首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法在Maven pom.xml中对所有${project.version}变量进行插值?

有没有办法在Maven pom.xml中对所有${project.version}变量进行插值?
EN

Stack Overflow用户
提问于 2020-09-01 00:12:49
回答 2查看 206关注 0票数 0

我需要用pom.xml中的实际值替换所有出现的${project.version}

我可以用maven-flatten-plugin做到这一点,但这将重写整个pom.xml,而不仅仅是替换project.version

因为我想使用jgitver-maven-plugin,所以我不能使用want插件的resolveCiFriendliesOnly模式。

有没有一种简单的方法来替换整个pom.xml中的一个变量?在flatten插件中有没有另一个(隐藏的)选项来做这件事?

EN

Stack Overflow用户

发布于 2021-08-24 14:31:10

有一些接近你想要实现的东西,但可能已经足够好了。但是,这将解析您选择的POM部分中的所有变量。

我使用了resolveCiFriendliesOnly,因为它是唯一一种可以保留原始POM的模式。

代码语言:javascript
运行
复制
    <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选项,例如

代码语言:javascript
运行
复制
<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>
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63674406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档