Подтвердить что ты не робот

Как использовать значение по умолчанию, если переменная окружения не задана для фильтрации ресурсов в maven?

Я использую фильтрацию ресурсов для замены некоторых ${values} в файле свойств.

например. файл содержит ОБЪЕКТ = ${значение}

Я хочу заменить ${VALUE} на переменную окружения $VALUE, которая хорошо работает, если $VALUE устанавливается при запуске сборки. Потрясающие.

Однако эти env vars устанавливаются только в нашей официальной среде сборки (Jenkins), а не в сборках разработчиков, поэтому значения ${values} остаются в файле свойств после фильтрации, что может сломать материал. Я бы предпочел не требовать env vars в средах разработчиков, так как это всегда приводит к хрупким конструкторам и кричащим разработчикам.

Как использовать значение переменной среды, если его набор и использовать другое значение свойства по умолчанию, если env var не установлен?

Из моего тестирования это работает по-другому, поскольку свойства, заданные в pom, будут переопределять переменные среды для фильтрации ресурсов.

Спасибо

4b9b3361

Ответ 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>