Maven是否有办法解析外部文本文件并使用正则表达式提取变量?用例是我有一个无法更改的外部文件。此文件不是proerties文件,而是C-Header文件。
我想要做的是maven将头文件中的部分提取到变量(如版本)并在构建期间使用此变量。
该过程可能如下所示:
我确实搜索了网络,但没有找到解决方案,目前卡住了。
答案 0 :(得分:1)
答案 1 :(得分:1)
找到一个方便我使用 groovy maven插件的解决方案。
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<defaults>
<name>Xenu</name>
</defaults>
<source>
String fileContents = new File("${project.basedir}/../include/version.h").getText('UTF-8')
matcher = (fileContents =~ /(?s).*MAJOR ([0-9]+).*?/)
String major_version = matcher.getAt(0).getAt(1)
matcher = (fileContents =~ /(?s).*MINOR ([0-9]+).*?/)
String minor_version = matcher.getAt(0).getAt(1)
matcher = (fileContents =~ /(?s).*PATCH ([0-9]+).*?/)
String patch_version = matcher.getAt(0).getAt(1)
String version = String.format('%s.%s.%s', major_version, minor_version, patch_version)
// Set version to be used in pom.properties
project.version = version
// Set version to be set as jar name
project.build.finalName = project.artifactId + "-" + version
</source>
</configuration>
</execution>
</executions>
</plugin>