Как использовать значение по умолчанию, если переменная окружения не задана для фильтрации ресурсов в maven?
Я использую фильтрацию ресурсов для замены некоторых ${values} в файле свойств.
например. файл содержит
ОБЪЕКТ = ${значение}
Я хочу заменить ${VALUE} на переменную окружения $VALUE, которая хорошо работает, если $VALUE устанавливается при запуске сборки. Потрясающие.
Однако эти env vars устанавливаются только в нашей официальной среде сборки (Jenkins), а не в сборках разработчиков, поэтому значения ${values} остаются в файле свойств после фильтрации, что может сломать материал. Я бы предпочел не требовать env vars в средах разработчиков, так как это всегда приводит к хрупким конструкторам и кричащим разработчикам.
Как использовать значение переменной среды, если его набор и использовать другое значение свойства по умолчанию, если env var не установлен?
Из моего тестирования это работает по-другому, поскольку свойства, заданные в pom, будут переопределять переменные среды для фильтрации ресурсов.
Спасибо
Ответы
Ответ 1
Я использую профиль для определения как
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>!myproperty</name>
</property>
</activation>
...
<properties>
<myproperty>some value</myproperty>
</properties>
</profile>
...
</profiles>
Обратите внимание:
- Для параметра
activeByDefault
установлено значение true, чтобы включить его по умолчанию.
-
!myproperty
означает, что это свойство отсутствует или не существует.
- Если
myproperty
не существует, используйте вместо него myproperty
, определенный в properties
.
Вы можете увидеть дополнительную информацию на http://maven.apache.org/guides/introduction/introduction-to-profiles.html
Надеюсь, это поможет вам в достижении ваших требований.
Привет,
Charlee Ch.
Ответ 2
Иметь такую же проблему в нашей группе разработки при использовании значения среды для обозначения пути к файловой системе - в частности, различия между linux и windows.
На основании другого решения по тому же вопросу:
<profile>
<id>MY_VAR default value</id>
<activation>
<property>
<name>!env.MY_VAR</name>
</property>
</activation>
<properties>
<env.MY_VAR>default value</env.MY_VAR>
</properties>
</profile>