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

属性任务覆盖的ant属性文件,ant,Ant,我试图在ant项目中设置一些全局属性 <property file="env/${deploy.servername}.properties" /> <property name="deploy.username" value="${env.USERNAME}" /> 由于ant任务是由jenkins参数化项目触发的,env.USERNAME总是设置好的,但并不总是正确的 我的设计目标是,如果属性deploy.username存在于deploy.servername

我试图在ant项目中设置一些全局属性

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

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

我的设计目标是,如果属性
deploy.username
存在于
deploy.servername
的文件中,则该文件应设置属性,并且作为ant不应允许重置属性,则应忽略
env.username
处的值

不幸的是,
env.USERNAME
提供的值总是脚本使用的值。为什么?ant是否在
属性文件=*
之前计算
属性名称=*
?属性是由
属性文件=*
设置的吗


感谢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>$${deploy.username} => ${deploy.username}</echo>
$${deploy.username}=>${deploy.username}
之前:

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

查看该属性是否已存在

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