当没有属性传递给目标时,sysproperty设置为值“$ {value}”

时间:2015-05-05 07:25:17

标签: ant

我正在执行一个参数为Dcolor=red的目标。我正在使用此属性值将系统属性设置为

<sysproperty key="COLOR" value="${color}" />

如果没有传递任何名为-Dcolor的参数,那么当COLOR取回System.getProperty("COLOR")时,正在返回${color}

这是正确的行为吗?如何处理这种情况即。如果没有传递参数名称颜色,则将COLOR设置为null。

如果我遗漏了基础知识,请告诉我。资源链接将有所帮助

1 个答案:

答案 0 :(得分:0)

这很疯狂,属性的评估是由Ant的PropertyHelper类完成的。但是基于源代码,返回的值应该为null,但事实并非如此。 documentation表示蚂蚁试图评估它,但它没有说明如果评估不成功会发生什么。

您可以通过预定义属性来设置默认值。

<property name="COLOR" value="defaultColor" /> 

但是这永远不会设置值null。

最后经过长时间的搜索,我发现使用syspropertyset而不是sysproperty会返回空值。

这是一个有效的例子:

    <propertyset id="java.props">
        <propertyref name="test.property"/>
      </propertyset> 
    <java>
            <syspropertyset refid="java.props"/>
  </java>

如果你得到test.property,它将返回null。