определите свойство ant из среды со значением по умолчанию
-
06-09-2019 - |
Вопрос
Я бы хотел, чтобы мой сценарий сборки работал должным образом в средах выпуска и разработки.
Для этого я хотел бы определить свойство в ant, вызвать его (например) fileTargetName
fileTargetName
получит это значение из переменной окружения RELEASE_VER
если он доступен, то, если он недоступен, он получит значение по умолчанию дев
Помощь с ant <condition><value></condition>
& <property>
мы ценим то, что это работает.
Решение
Пример из Документация 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>
Другие советы
Вам не нужно использовать <condition>
для этого.Свойствами в Ant являются неизменяемый, так что вы можете просто использовать это:
<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
Если RELEASE_VER
установлена переменная окружения, тогда свойство получит свое значение из окружения, а вторая <property>
заявление не будет иметь никакого эффекта.В противном случае свойство будет сброшено после первого оператора, а второй оператор установит его значение равным "dev"
.
Я уверен, что есть более простые способы, чем этот, но как насчет:
<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>