简体   繁体   English

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

[英]define ant property from environment with default value

I would like my build script to act properly for release and development environments. 我希望我的构建脚本能够在发布和开发环境中正常运行。

For this I would like to define a property in ant, call it (eg) fileTargetName 为此,我想在ant中定义一个属性,调用它(例如) fileTargetName

fileTargetName will get it's value from the environment variable RELEASE_VER if it's available, if it is not available it will get the default value of dev fileTargetName将从环境变量RELEASE_VER获取它的值,如果它可用,如果它不可用,它将获得默认的dev

Help with ant <condition><value></condition> & <property> to get it working is appreciated. 帮助ant <condition><value></condition><property>让它工作表示赞赏。

An example from the Ant documentation of how to get an environment variable into a property: Ant文档中有关如何将环境变量导入属性的示例:

<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>

In your case, you would use ${env.RELEASE_VER} . 在您的情况下,您将使用${env.RELEASE_VER}

Then for the conditional part, the documentation here says that there are three possible attributes: 然后对于条件部分, 这里的文档说有三个可能的属性:

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

Putting it together: 把它放在一起:

<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
    <isset property="env.RELEASE_VER" />
</condition>

You don't need to use a <condition> for this. 您不需要为此使用<condition> Properties in Ant are immutable , so you can just use this: Ant中的属性是不可变的 ,因此您可以使用它:

<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>

If the RELEASE_VER environment variable is set, then the property will get its value from the environment and the second <property> statement will have no effect. 如果设置了RELEASE_VER环境变量,则该属性将从环境中获取其值,并且第二个<property>语句将不起作用。 Otherwise, the property will be unset after the first statement, and the second statement will set its value to "dev" . 否则,在第一个语句之后将取消设置该属性,第二个语句将其值设置为"dev"

I'm sure there are easier ways than this, but how about: 我相信有比这更简单的方法,但是如何:

<project name="example" default="show-props">

    <property environment="env" />

    <condition property="fileTargetName" value="${env.RELEASE_VER}">
        <isset property="env.RELEASE_VER" />
    </condition>

    <condition property="fileTargetName" value="dev">
        <not>
            <isset property="env.RELEASE_VER" />
        </not>
    </condition>

    <target name="show-props">
        <echo>property is ${fileTargetName}</echo>
    </target>

</project>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM