我试图在蚂蚁项目中设置一些全局属性。
<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=*
可变的属性设置?
感谢您的帮助
答案 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"/>
查看该属性是否已存在。