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

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

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

Для этого я хотел бы определить свойство в ant, называть его (например) fileTargetName

fileTargetName получит значение из переменной окружения RELEASE_VER, если оно доступно, если оно не доступно, оно получит значение по умолчанию dev

Помогите с ant <condition><value></condition> и <property>, чтобы получить его работу.

4b9b3361

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