[英]Check if environment variable has been set in Ant script
在执行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."/>
你可以做的另一件事(除了大卫之外)是可以使用的
<isset property="env.Foo"/> instead of <equals />
您可以通过在<fail>
使用嵌入的<condition>
来缩短它。
<property environment="env"/>
<fail message="FOO not set.">
<condition>
<isset property="${env.FOO}"/>
</condition>
</fail>
<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 message="FOO not set.">
<condition>
<isset property="env.FOO"/>
</condition>
</fail>
如果设置了$ FOO,则不会失败,但为空。
这是我想出的,使用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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.