Установить свойство maven из плагина - PullRequest
15 голосов
/ 26 сентября 2011

Я прочитал здесь несколько вопросов о том, как установить свойство (большинство из них говорили о номере версии приложения) из плагина maven. Кажется, нет простого способа сделать это, и лучшее решение, которое я нашел, это иметь файл filter.properties, который обновляется из плагина и используется основным файлом pom для фильтрации требуемых ресурсов.

Я попробовал другое решение после того, как прочитал это из документации Maven ( Плагин фильтра Maven ):

Переменные могут быть включены в ваши ресурсы. Эти переменные, обозначенные разделителями $ {...} могут быть получены из системных свойств, ваш свойства проекта, из ваших ресурсов фильтра и из команды линия.

Мне показалось интересным, что переменная может быть прочитана из системных свойств. Итак, я изменил свой плагин, чтобы установить системное свойство следующим образом:

System.setProperty("currentVersion", appCurrentVersion);

Однако отфильтрованные ресурсы, похоже, не читают это значение. Может кто-нибудь сказать мне, что не так с этим подходом?

ОБНОВЛЕНИЕ: я запускаю свой плагин в фазе проверки .

Большое спасибо.

Ответы [ 2 ]

22 голосов
/ 26 сентября 2011

Не устанавливайте его как системное свойство, установите его как свойство проекта Maven

// inject the project
@Parameter(defaultValue = "${project}")
private org.apache.maven.project.MavenProject project;

// and in execute(), use it:
project.getProperties().setProperty("currentVersion", appCurrentVersion);

См .:

3 голосов
/ 26 сентября 2011

Maven устанавливает свойства в фазе инициализации . Я предполагаю, что на этом этапе maven загружает системные свойства. И после этого maven не загружает системные свойства снова. Если вы попытаетесь добавить системное свойство после этого этапа, оно не будет загружено.

Попробуйте запустить ваш плагин в фазе проверки .

...