【问题标题】:define ant property from environment with default value使用默认值从环境中定义 ant 属性
【发布时间】:2010-10-30 12:34:12
【问题描述】:

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

为此,我想在 ant 中定义一个属性,将其命名为(例如)fileTargetName

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

感谢帮助 ant <condition><value></condition><property> 使其正常工作。

【问题讨论】:

    标签: java ant environment-variables release packaging


    【解决方案1】:

    Ant documentation 中关于如何将环境变量放入属性的示例:

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

    在你的情况下,你会使用${env.RELEASE_VER}

    然后对于条件部分,文档here 说有三个可能的属性:

    属性 描述 必填 property 要设置的属性的名称。是的 value 要将属性设置为的值。默认为“真”。不 else 将属性设置为的值 if 条件 否 评估为假。默认情况下,该属性将 保持未设置。自蚂蚁 1.6.3

    把它放在一起:

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

    【讨论】:

    • 昨天我无法回答这个问题,但是 SO 迫使我去研究。 StackOverflow 万岁!
    • 谢谢! ant 的一个奇怪行为:如果未设置环境参数,则在 ${env.ANT_HOME} 上执行回显将打印“${env.ANT_HOME}”。默认的ant调用没有设置(至少在本机上:RH WS 5, bash)
    【解决方案2】:

    您不需要为此使用&lt;condition&gt;。 Ant 中的属性是immutable,所以你可以使用这个:

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

    如果设置了RELEASE_VER 环境变量,则属性将从环境中获取其值,第二个&lt;property&gt; 语句将不起作用。否则,在第一个语句之后该属性将被取消设置,第二个语句将其值设置为"dev"

    【讨论】:

    • 不完全一样的效果,但我想你可以添加另一个 给它起任何你想要的名字,对吧?
    • 当然,您可以添加第三行,例如
    • 谢谢,这是对这个问题的一个很好的转折。由于可读性的原因,我会坚持这个条件。
    • 当然是每个人自己的。但在我遇到的构建文件中,属性不变性是一个相当常见的习惯用法。
    【解决方案3】:

    我相信还有比这更简单的方法,但是怎么样:

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

    【讨论】:

    • 不知道条件的 else 属性 - @mmyers FTW
    • 我想必须在手册中查找所有内容有其好处。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 2018-10-18
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多