gpt4 book ai didi

java - 在 Maven 中,如何在运行时动态构建属性值?

转载 作者:太空狗 更新时间:2023-10-29 22:32:07 26 4
gpt4 key购买 nike

在 maven 中,使用以下语法在 pom 中设置属性非常容易:

...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...

现在我需要根据我的 pom.xml 版本构建一个属性。为了创建属性,我想执行以下操作(java 伪代码):

String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0], splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6

它应该是动态的,因为它在我们的存储库中用作标签名称并且必须始终与 Artifact 的版本同步。

关于如何创建“动态”属性的任何想法?

最佳答案

Mojo 的 Build-Helper Maven 插件可以帮到您。

有许多目标可用于帮助转换属性。

可能 regex-property是你想要的,但如果你的版本号符合“标准”,那么其他两个可能会拯救你。

使用regex-property目标你会做类似的事情

<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>tag.version</name>
<value>${project.version}</value>
<regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.(-SNAPSHOT)?$</regex>
<replacement>V$1_$2_$3_P$4</replacement>
<failIfNoMatch>true</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>

注意:我的正则表达式可能略有偏差,因此您应该测试上面的内容。

注意:该属性值仅可用于此执行绑定(bind)到的阶段之后的执行。它绑定(bind)到的默认阶段是 validate 但如果您处于不同的生命周期(例如网站生命周期),则该值将不可用。

关于java - 在 Maven 中,如何在运行时动态构建属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002033/

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