使用默认值定义环境中的ant属性

Max*_*ler 53 java ant packaging release environment-variables

我希望我的构建脚本能够在发布和开发环境中正常运行.

为此,我想在ant中定义一个属性,调用它(例如) fileTargetName

fileTargetNameRELEASE_VER如果它可用,它将从环境变量中获取它的值,如果它不可用,它将获得dev的默认值

帮助蚂蚁<condition><value></condition><property>使其工作表示赞赏.

Mic*_*ers 76

Ant文档中有关如何将环境变量导入属性的示例:

<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你会使用${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>
Run Code Online (Sandbox Code Playgroud)

  • 昨天我无法回答这个问题,但是SO迫使我去研究.Hooray for StackOverflow! (2认同)

Jas*_*Day 41

你不需要使用<condition>它.Ant中的属性是不可变的,因此您可以使用它:

<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
Run Code Online (Sandbox Code Playgroud)

如果RELEASE_VER设置了环境变量,那么该属性将从环境中获取其值,而第二个<property>语句将不起作用.否则,在第一个语句之后将取消设置该属性,并且第二个语句将其值设置为"dev".

  • 当然,对他自己而言.但是属性不变性在我遇到的构建文件中是一个相当普遍的习惯用法. (2认同)