[英]substring a variable in pom.xml
是否可以(以及如何)在 pom.xml 或使用該變量的屬性中對變量進行子字符串化?
我的場景:
我有一個擺動應用程序,它在其頁腳中顯示一種版本。 此版本是從屬性文件中讀取的。 屬性文件只有一個 Maven 變量的引用,如:
version=${git.branch}
在我的 pom.xml 中,有一個插件可以查找分支名稱,並將其寫入“git.branch”變量中。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.2</version>
<configuration>
<dotGitDirectory>${project.basedir}/../.git</dotGitDirectory>
<injectAllReactorProjects>true</injectAllReactorProjects>
</configuration>
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/version.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/version.properties</exclude>
</excludes>
</resource>
</resources>
</build>
但是現在我們為分支名稱使用了前綴,並且這個前綴不應該與應用程序版本一起部署。
我有這樣的分支:
v123
v124
v125
現在我有這樣的分支:
b_04_v123
b_04_v124
而且我希望 maven 只獲取字符串“b_04_v123”的值“v124”,前綴是固定的,就像“b_NN_”一樣。
注意:不,不能更改分支名稱,因為其他部門將它們與腳本和自動化一起使用。
你可以使用org.codehaus.groovy.maven
插件:
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
System.setProperty("version2","${version}".replace('b_04_', ''))
</source>
</configuration>
</execution>
</executions>
</plugin>
現在您可以使用 version2 :
version=${version2}
我在java代碼中解決了它,我已經有一個讀取屬性文件的代碼,只是在那里添加了子字符串。 這不是一個漂亮的 Maven 解決方案,但有效。 從一開始我就可以做到這一點。 但是,如果有人能告訴我如何在我的 pom.xml 中對變量進行子串化,那就太好了,盡管我不再需要它(或同樣緊迫)我仍然很好奇。
我自己偶然發現了這個問題,其他提供的答案對我不起作用。 所以我創建了自己的 Maven 插件。 它可以使用正則表達式搜索和替換其他變量或普通文本,從而創建一個新變量。 對於您的情況,它將是這樣的:
<plugin>
<groupId>io.github.1tchy</groupId>
<artifactId>variable-search-replace-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<text>${git.branch}</text>
<search>^b_\d\d_</search>
<variableName>old.version</variableName>
</configuration>
</execution>
</executions>
</plugin>
然后您可以簡單地將其用作普通屬性: version=${old.version}
該插件還可以定義替換文本:查看其文檔!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.