Ehm*_*Kah 20 java properties maven
在maven中,使用以下语法在pom中设置属性非常容易:
...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...
Run Code Online (Sandbox Code Playgroud)
现在我需要构建一个取决于我的pom版本的属性.为了创建属性,我想执行以下操作(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
Run Code Online (Sandbox Code Playgroud)
它应该是动态的,因为它在我们的存储库中用作标记名称,并且必须始终与工件的版本同步.
任何想法如何创建"动态"属性?
Ste*_*lly 34
Mojo的Build-Helper Maven插件可以帮助你.
有许多目标可用于帮助转换属性.
有
可能正则属性是您想要的属性,但如果您的版本号符合"标准",则其他两个可能会为您节省.
要使用正则表达式属性目标,您可以执行类似的操作
<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>
Run Code Online (Sandbox Code Playgroud)
注意:我的正则表达式可能略有偏差,所以你应该测试上面的内容.
注意:属性值仅在此执行绑定的阶段之后可用于执行.它所绑定的默认阶段是,validate但如果您处于不同的生命周期(例如站点生命周期),则该值将不可用.
您可以使用 maven build-helper 插件,特别是它的regex-property mojo。查看使用示例(滚动到通过将正则表达式替换应用于值部分来设置属性)。
基本上你想要在你的 pom 中得到类似的东西来myVersionTag推断属性myValue:
<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>myVersionTag</name>
<value>$\{myValue}</value>
<regex>(\d+)\.(\d+)\.(\d+)\.(\d+)</regex>
<replacement>V_$1_$2_$3_P$4</replacement>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25774 次 |
| 最近记录: |