определите свойство ant из среды со значением по умолчанию

StackOverflow https://stackoverflow.com/questions/936793

Вопрос

Я бы хотел, чтобы мой сценарий сборки работал должным образом в средах выпуска и разработки.

Для этого я хотел бы определить свойство в 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top