繁体   English   中英

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

[英]ant property file overwritten by property task

我正在尝试在ant项目中设置一些全局属性。

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

由于ant任务是由jenkins参数化的项目触发的,因此始终会设置env.USERNAME但并不总是正确的。

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

不幸的是, env.USERNAME提供的值env.USERNAME是脚本使用的值。 为什么? ant是否在property file=*之前评估property name=* property file=* 通过property file=*设置的property file=*是否可变?

谢谢您的帮助

在ant中,一旦设置的属性在设计上是不可变的。 使用不同的机制创建属性时,没有特定的顺序-属性的第一个声明将获胜。
给定的propertyfile 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"/>

查看该属性是否已经存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM