加载两个外部属性文件时无法使用 ant-contrib 取消设置属性
所以...我有 build.xml 从 basedir 加载属性文件。
然后,作为目标,我执行以下操作:
<var name="Var1" value="<property_from_**first**_loaded_property_file>" />
<var name="<property_from_**first**_loaded_property_file>" unset="true"/>
<property file="../<other directory>/<**second**_property_file>.properties" />
<var name="Var2" value="<property_from_**second**_loaded_property_file>"/>
这里的注意事项是两者都具有相同属性名称。它无法改变。
所以,最后,我应该得到这样的属性:
Var1=<property_from_**first**_loaded_property_file>
Var2=<property_from_**second**_loaded_property_file>
但是 - 我收到迹象表明第一个属性文件中的属性 (Var1) 未设置,然后填充了第二个属性文件中的新值。 ant-contribs unset 应该处理的事情:/ ...比如:
Var1 = Var2
为什么我没有得到预期的结果?
So ... I have build.xml that loads property file from basedir.
Then, as the target I perform the following:
<var name="Var1" value="<property_from_**first**_loaded_property_file>" />
<var name="<property_from_**first**_loaded_property_file>" unset="true"/>
<property file="../<other directory>/<**second**_property_file>.properties" />
<var name="Var2" value="<property_from_**second**_loaded_property_file>"/>
The ceavat here is that both has same property name. It cannot be changed.
So, in the end, I should get the property like:
Var1=<property_from_**first**_loaded_property_file>
Var2=<property_from_**second**_loaded_property_file>
But instead -
I am getting signs that property (Var1) from first properties file is not unset and then filled with new value from second properties file. The thing that ant-contribs unset should deal with :/ ... something like:
Var1 = Var2
Why I am not getting the expected result?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为问题在于,即使您将变量加载到 antcontrib
var
中,它仍然首先是一个 antproperty
,因此是不可变的。我知道您无法更改属性文件,但是您对脚本本身有什么样的自由?您可以尝试利用作用域规则和 antcallback 任务来确定变量加载的范围。
例如,以下实现 - 尽管有点混乱 - 我认为你想要的:
在我的控制台中我看到:
这与我分别在 prop1.properties 和 prop2.properties 中为 var 属性设置的值相匹配。
I think the issue is that even though you're loading the variable into an antcontrib
var
, it's still an antproperty
first, thus immutable.I know you can't change the property files, but what kind of freedom do you have with the script itself? You can try to leverage the scoping rules and the
antcallback
task to scope where the variables get loaded.For example, the following achieves - albeit somewhat messily - what I think you're after:
In my console I see:
Which matches the values i set in prop1.properties and prop2.properties, respectively, for the var property.
您无法取消设置该值。
您必须取消设置变量
You can't unset the value.
You have to unset the variable
如果您需要覆盖某些现有属性或用户属性(通过 ant 命令行
参数 -Dkey=value 定义的那些属性),您可以使用 Ant 插件 Flaka 作为 antcontrib 的替代品。
使用 Flaka 的 let 任务,您可以直接创建一个新属性或覆盖任何现有属性:
If you need to overwrite some existing property or userproperty (those properties defined via ant commandline
parameter -Dkey=value), you might use Ant Plugin Flaka as alternative for antcontrib.
With Flaka's let task you either create a new property or overwrite any existing property straightforward :