Как я могу выполнить цель ant в зависимости от значения переменной окружения? - PullRequest
0 голосов
/ 12 октября 2018

Я хочу выполнить ant-скрипт на двух разных компьютерах.В зависимости от имени компьютера должна быть выполнена любая из двух целей.Следующее не работает:

<project name="import" default="all">
  <property environment="env"/>    
  <target name="staging" if="${env.COMPUTERNAME}='STG'">
    <echo>executed on staging</echo>
  </target>      
  <target name="production" if="${env.COMPUTERNAME}='PRD'">
    <echo>executed on production</echo>
  </target>      
  <target name="all" depends="staging,production" description="STG or PRD"/>
</project>

Как я понял, «если» можно использовать только со свойством, и оно проверяет, установлено ли свойство или нет.Но есть ли способ сделать условие в зависимости от стоимости имущества?

1 Ответ

0 голосов
/ 13 октября 2018

Я бы предложил написать цель "init", которая устанавливает любые условия, необходимые для последующих этапов сборки, а также дает сбой при сборке, если определенные требуемые свойства не соответствуют ожидаемым.

Например:

<target name="all" depends="staging,production,init" />

<target name="staging" if="staging.environment" depends="init">
    <echo message="executed on staging" />
</target>

<target name="production" if="production.environment" depends="init">
    <echo message="executed on production" />
</target>

<target name="init">
    <condition property="staging.environment">
        <equals arg1="${env.COMPUTERNAME}" arg2="STG" />
    </condition>

    <condition property="production.environment">
        <equals arg1="${env.COMPUTERNAME}" arg2="PRD" />
    </condition>

    <fail message="Neither staging nor production environment detected">
        <condition>
            <not>
                <or>
                    <isset property="staging.environment" />
                    <isset property="production.environment" />
                </or>
            </not>
        </condition>
    </fail>
</target>
...