[英]Ant loadfile override property
我正在尝试在循环中使用Ant任务<loadfile>
来解析文件的内容。 我有类似的东西
<loadfile srcFile="@{some.input}" property="my.property">
由于Ant属性是不可变的,这对我来说不起作用。 我需要'my.property'来更新每次迭代。 有没有办法实现这个目标? 我知道Ant-contrib有一个<var>
任务,但我不确定如何使用<loadfile>
。
有什么建议?
谢谢。
<loadfile property="foo" srcfile="bar.txt"/>
... do some actions, perhaps in a <for> loop ...
<var name="foo" unset="true"/>
然后,您可以在<loadfile>
再次使用foo
其中一个能够覆盖属性值的内置任务是script
。
下面是一个脚本和输出,证明属性值已更改。
<project name="test">
<property name="bshJar" value="C:\lang\java\bsh-1.3.0.jar:C:\lang\java\bsf.jar:C:\lang\java\commons-logging-1.1.1.jar" />
<property name="a" value="first" />
<echo>a=${a}</echo>
<script manager="bsf" language="beanshell" classpath="${bshJar}"><![CDATA[
project.setProperty("a", "fourth");
]]></script>
<echo>a=${a}</echo>
</project>
输出:
a=first
a=fourth
Ant contrib还有一个取消设置的var任务。
运气:通常接受其中一个答案,以便人们知道问题已得到解决。 我建议你接受吉尔伯特,因为他先发布了正确答案。
你在ANT中试过这个剧本吗?
<script language="javascript">
project.setProperty("my.property", "somevalue");
</script>
您可以在MacroDef中为每个srcFile创建一个新属性:
<loadfile srcFile="@{some.input}" property="@{some.input}_Prop">
<echo message="@{some.input} Contents: ${@{some.input}_Prop}"/>
我刚刚使用了Antelope提供的<unset>
任务http://antelope.tigris.org/
Ant插件Flaka提供了一个let任务,允许覆盖现有的属性或变量,如=
<project xmlns:fl="antlib:it.haefelinger.flaka">
<property name="my.property" value="value"/>
<fl:let> my.property ::= 'anothervalue'</fl:let>
</project>
所以不需要先取消设置然后再设置。 顺便说一句。 Flaka也有一个未设置的任务;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.