Я понимаю, что на это ответили давно, но я придумал новый поворот в ответе, который некоторые могут найти полезным.
У меня есть плагин replacer, меняющий строку в файле Java на каждой сборке MAVEN. Таким образом, если pom.xml
когда-либо обновляет номер версии проекта pom, он автоматически отражается в исходном файле Java.
СКАЗАТЬ МАВЕНУ О replace
Цель:
<build>
...
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.google.code.maven-replacer-plugin
</groupId>
<artifactId>
replacer
</artifactId>
<versionRange>
[1.5.3,)
</versionRange>
<goals>
<goal>replace</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
<runOnIncremental>true</runOnIncremental>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
...
</build>
РАССКАЗАТЬ МАВЕНУ, ЧТОБЫ ЗАПОЛНИТЬ ТЕКУЩЕЕ ИМЯ И ВЕРСИЮ:
(Если хотите, укажите полный подпуть в basedir
и удалите **/
из включенного имени файла.)
<build>
...
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>replace-version-number</id>
<phase>generate-sources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<basedir>${project.basedir}/src/main/java</basedir>
<includes>
<include>**/Constants.java</include>
</includes>
<preserveDir>true</preserveDir>
<replacements>
<replacement>
<token>mavenProjectName = ".*"</token>
<value>mavenProjectName = "${project.name}"</value>
</replacement>
<replacement>
<token>mavenProjectVersion = ".*"</token>
<value>mavenProjectVersion = "${project.version}"</value>
</replacement>
</replacements>
</configuration>
</plugin>
....
</plugins>
...
</build>
IN Constants.java:
...
private static final String mavenProjectName = "";
private static final String mavenProjectVersion = "";
...
Значения заполняются значениями POM в фазе generate_sources
перед фазой компиляции.
Подстановочный знак .*
в токене заменителя означает, что значение обновляется, даже если вы проверяете обновленную копию в системе контроля версий.