检查Ant脚本中是否设置了环境变量



在执行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>

这不是像那么简单吗

<property environment="env"/>
<fail unless="env.FOO" message="FOO not set."/>

您可以做的另一件事(除了David的)是使用

<isset property="env.Foo"/> instead of <equals />

关闭:

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

如果设置了$FOO,但为null,则此操作不会失败。

<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>

您可以通过在<fail>中使用嵌入式<condition>来稍微缩短它。

<property environment="env"/>
<fail message="FOO not set.">
    <condition>
        <isset property="${env.FOO}"/>
    </condition>
</fail>

以下是我的想法,使用isset属性检查仅在Unix上存在的enviro变量。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>

相关内容

  • 没有找到相关文章

最新更新