Define ant свойство из среды со значением по умолчанию
Я бы хотел, чтобы моя сборка script корректно работала для среды выпуска и разработки.
Для этого я хотел бы определить свойство в ant, называть его (например) fileTargetName
fileTargetName
получит значение из переменной окружения RELEASE_VER
, если оно доступно, если оно не доступно, оно получит значение по умолчанию dev
Помогите с ant <condition><value></condition>
и <property>
, чтобы получить его работу.
Ответы
Ответ 1
Пример из Ant документации о том, как получить переменную среды в свойстве:
<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
В вашем случае вы должны использовать ${env.RELEASE_VER}
.
Затем для условной части документация здесь говорит о наличии трех возможных атрибутов:
Attribute Description Required
property The name of the property to set. Yes
value The value to set the property to. Defaults to "true". No
else The value to set the property to if the condition No
evaluates to false. By default the property will
remain unset. Since Ant 1.6.3
Объединяя это:
<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
<isset property="env.RELEASE_VER" />
</condition>
Ответ 2
Для этого вам не нужно использовать <condition>
. Свойства в Ant неизменяемы, поэтому вы можете просто использовать это:
<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
Если установлена переменная среды RELEASE_VER
, то свойство получит ее значение из среды, а второй оператор <property>
не будет иметь никакого эффекта. В противном случае свойство будет отменено после первого оператора, а второй оператор установит значение "dev"
.
Ответ 3
Я уверен, что есть более простые способы, чем это, но как насчет:
<project name="example" default="show-props">
<property environment="env" />
<condition property="fileTargetName" value="${env.RELEASE_VER}">
<isset property="env.RELEASE_VER" />
</condition>
<condition property="fileTargetName" value="dev">
<not>
<isset property="env.RELEASE_VER" />
</not>
</condition>
<target name="show-props">
<echo>property is ${fileTargetName}</echo>
</target>
</project>