ant属性文件被属性任务覆盖

时间:2014-11-03 22:07:47

标签: ant

我试图在蚂蚁项目中设置一些全局属性。

<property file="env/${deploy.servername}.properties" />
<property name="deploy.username" value="${env.USERNAME}" />

由于jenkins参数化项目触发了ant任务env.USERNAME总是设置但不总是正确的。

我使用此设计的目标是,如果deploy.username文件中存在属性deploy.servername,则文件应设置属性,而不应该允许重置属性,应忽略env.USERNAME处的值。

不幸的是,env.USERNAME提供的值总是脚本使用的值。为什么?蚂蚁在property name=*之前评估property file=*吗?是property file=*可变的属性设置?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在ant中,设置的属性在设计上是不可变的。使用不同的机制创建属性时没有特定的顺序 - 属性的第一个声明获胜 给定属性文件foo.properties具有:

JAVA_HOME=some/path

示例脚本

<project>

  <property file="foo.properties"/>
  <property name="JAVA_HOME" value="foobar"/>

  <property environment="env"/>
  <property name="JAVA_HOME" value="${env.JAVA_HOME}"/>

  <echo>$${JAVA_HOME} => ${JAVA_HOME}</echo>

</project>


输出
[echo] ${JAVA_HOME} => some/path

这意味着该物业已在其他地方定义 放在那一行:

<echo>$${deploy.username} => ${deploy.username}</echo>

之前:

<property file="env/${deploy.servername}.properties"/>

查看该属性是否已存在。