Как я могу использовать значение по умолчанию, если переменная окружения не установлена ​​для фильтрации ресурсов в maven? - PullRequest
38 голосов
/ 30 июня 2011

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

например. файл содержит СОБСТВЕННОСТЬ = $ {VALUE}

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

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

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

По моему тестированию, по умолчанию, все работает наоборот: свойства, заданные в pom, переопределяют переменные среды для фильтрации ресурсов.

Спасибо

Ответы [ 2 ]

43 голосов
/ 30 июня 2011

Я использую профиль для определения как

<profiles>
  <profile>
    <activation>
      <activeByDefault>true</activeByDefault>
      <property>
        <name>!myproperty</name>
      </property>
    </activation>
    ...
    <properties>
       <myproperty>some value</myproperty>
    </properties>
  </profile>
  ...
</profiles>

Обратите внимание

  1. Значение activeByDefault установлено в значение true, чтобы включить его по умолчанию.
  2. !myproperty означает, что это свойство отсутствует или не существует.
  3. Если myproperty не существует, просто используйте вместо него myproperty, определенный в properties.

Вы можете увидеть дополнительную информацию на http://maven.apache.org/guides/introduction/introduction-to-profiles.html

Надеюсь, это поможет вам выполнить ваши требования.

С уважением,

Чарли Ч.

5 голосов
/ 17 апреля 2016

В нашей группе разработчиков возникает такая же проблема при использовании значения среды для обозначения пути к файловой системе - в частности, разница между 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...