Проверьте, установлена ​​ли переменная окружения в скрипте Ant - PullRequest
13 голосов
/ 06 июня 2011

Какой самый эффективный способ проверить, была ли установлена ​​переменная среды перед выполнением остальной части сценария Ant?

Допустим, мой сценарий Ant требует установки переменной среды "FOO".Я получил следующее для работы, но мне было интересно, есть ли менее убедительный способ достижения того же результата:

<property environment="env"/>
<property name="env.FOO" value=""/>

<target name="my-target">
    <condition property="foo.found">
        <not>
            <equals arg1="${env.FOO}" arg2=""/>
        </not>
    </condition>
    <fail unless="foo.found" message="FOO not set."/>
    <!-- do stuff here that uses the FOO environment variable -->
</target>

Ответы [ 6 ]

25 голосов
/ 06 июня 2011

Разве это не так просто, как:

<property environment="env"/>
<fail unless="env.FOO" message="FOO not set."/>
8 голосов
/ 06 июня 2011

и еще одна вещь, которую вы можете сделать (в дополнение к Давиду) - это использовать

<isset property="env.Foo"/> instead of <equals />
0 голосов
/ 13 февраля 2012

Вот что я придумал, используя свойство isset для проверки переменной enviro, которая присутствует только в Unix. set.properties - первая цель, которая начала это.

<property environment="env" />        

<target name="init" depends="set.properties" />

    <!--  Do init stuff....  -->
    </target>

    <!-- Other target stuff.....  -->

<!--
        Target: set.properties
--> 
<target name="set.properties"       
 description="Initializes Build Script, checks displays properties"
     depends="cond.hostname.exist,cond.hostname.not.exist">
</target>

<!--
        Target: check.cond HostName is Present
-->     
<target name="cond.check">
    <condition property="cond-is-true">
            <isset property="env.HOSTNAME"/>
    </condition>
</target>   

<!--
        Target: cond.hostname.exist
-->         
<target name="cond.hostname.exist" depends="cond.check" if="cond-is-true">
    <property name="targetboxname"  value="${env.HOSTNAME}" />
</target>   

<!--
        Target: cond.hostname.not.exist
-->             
<target name="cond.hostname.not.exist" depends="cond.check" unless="cond-is-true">
    <property name="targetboxname"  value="${env.COMPUTERNAME}" />
</target>   

    <!-- Then later on....  -->
    <echo>ComputerName/HostName:  ${targetboxname}  </echo>
0 голосов
/ 06 июня 2011

Закрыть:

<fail message="FOO not set.">
    <condition>
        <isset property="env.FOO"/>
    </condition>
</fail>

Это не будет ошибкой, если $ FOO был установлен, но имеет значение null.

0 голосов
/ 06 июня 2011

<property name="test.home.0" value="${env.TEST_HOME}"/>
<condition property="test.home" value="TO_BE_REPLACED">
  <equals arg1="${test.home.0}" arg2="\${env.TEST_HOME}"/>
</condition>
<property name="test.home" value="${env.TEST_HOME}"/>

<target name="test">
  <echo>TEST_HOME: ${test.home}</echo>
</target>
0 голосов
/ 06 июня 2011

Вы можете немного сократить его, используя встроенный <condition> внутри <fail>.

<property environment="env"/>
<fail message="FOO not set.">
    <condition>
        <isset property="${env.FOO}"/>
    </condition>
</fail>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...