Поскольку ваши Java-файлы будут скомпилированы до того, как вы сможете изменить переменные, обычные фильтры, которые вы пробовали, не будут работать.Тем не менее, я смог добиться аналогичного эффекта, используя maven-replacer-plugin , который просто подставляет строки в файлы.Для меня гораздо чище иметь настройку, подобную той, которую вы предлагаете, в которой переменная в формате ${my_variable}
может быть последовательно заменена какой-либо текущей версией.
Однако с использованием maven-replacer-pluginу вас нет такой роскоши, так как он на самом деле изменяет сам исходный файл.Таким образом, если вы скажете, что в какой-то момент времени вместо ${my_variable}
будет Version 1.2.3
, файл больше не будет содержать текст "${my_variable}"
, поскольку он уже был бы заменен.Так что вам придется пересмотреть свою стратегию замещения.Вот что я настроил ...
Я добавил общий класс с именем "VersionManager", который просто имеет следующий код:
public class VersionManager {
private static String version="empty";
public static String getVersion(){
return version;
}
}
В <project><properties>
я добавил следующую строку (необязательно)):
<display_version>v${project.version} #${BUILD_ID}</display_version>
Затем включите maven-replacer-plugin и настройте его следующим образом:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>--yourDirectoryPaths--/shared/VersionManager.java</file>
<replacements>
<replacement>
<token>private static String version=\".*\";</token>
<value>private static String version="${display_version}";</value>
</replacement>
</replacements>
</configuration>
</plugin>
Как видите, я говорю плагину заменить строку, содержащуюprivate static String version="*";
с новой строкой, содержащей большую часть того же текста, но с нужным номером версии в кавычках.
Вы можете проверить это без необходимости компилировать весь ваш проект, запустив mvn validate
, который запуститподстановка и должна появиться в вашем исходном файле.
Тогда ваш сервер и клиент будут знать, какую версию они использовали, когда они были собраны.