Установить свойство maven из плагина

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

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

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

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

System.setProperty("currentVersion", appCurrentVersion);

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

UPDATE: я запускаю свой плагин на этапе проверки.

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

Ответ 1

Не устанавливайте его как свойство системы, задайте его как свойство Maven Project

// inject the project
/** @parameter default-value="${project}" */
private org.apache.maven.project.MavenProject project;

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

См:

Ответ 2

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

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