我正在执行一个参数为Dcolor=red
的目标。我正在使用此属性值将系统属性设置为
<sysproperty key="COLOR" value="${color}" />
如果没有传递任何名为-Dcolor
的参数,那么当COLOR
取回System.getProperty("COLOR")
时,正在返回${color}
。
这是正确的行为吗?如何处理这种情况即。如果没有传递参数名称颜色,则将COLOR设置为null。
如果我遗漏了基础知识,请告诉我。资源链接将有所帮助
答案 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。