我需要保留一个控制值(可能在文件中),以决定是否执行任务。
我来自这里:Ant: How can I subtract two properties (containing timestamps)?
我想要做的是检查控制值是否等于句点(mmYY)。如果它相等,则不会执行任何操作,但如果不相同,则应更新控制值。
例如:
<task dosomethingifcontrolvaluediffers>
control value is 0000
(calculated) property is: 0110
Then, control value should now be 0110.
</task>
我在考虑将值保存在单独的文件中,如果需要重写,则截断文件并进行更新,但
1)无法找到办法
2)不知道如何。
3)脚本编写?将是我最喜欢的选择,但不知道如何在js。有什么想法吗?
提前致谢。
答案 0 :(得分:1)
应该在Ant之外完成。使用您知道的任何语言编写脚本(bash,Python,JavaScript等)进行计算,进行检查,并在需要时使用该值作为参数调用Ant。
Ant并不打算成为脚本语言。当人们试图成功时会遇到麻烦。
答案 1 :(得分:0)
我没试过,但是,你可以这样做:
像这样使用条件任务
<condition property="exectask">
<equals arg1="${prop1}" arg2="${prop2}" trim="true"/>
</condition>
然后根据属性值
调用目标<target name="dosomethingifcontrolvaluediffers" unless="${exectask}">
</target>
希望它有所帮助。
答案 2 :(得分:0)
正如duffymo所提到的,Ant不是一种脚本语言。
虽然您可以在Ant中使用类似javascript的脚本语言,但请参阅scriptdef
task了解详细信息。
您可以像这样定义自己的任务:
<scriptdef name="nameOfTheTask" language="javascript">
<![CDATA[
(your script goes here)
]]>
</scriptdef>
您可以像这样使用新任务:
<nameOfTheTask/>
您还提到过您希望在文件中存储值。这可以使用echo
task:
<echo file="yourFile">aProperty=${aProperty}{line.separator}</echo>
这会将值写入文件 yourFile 。输出例如是:
aProperty=some value
您可以在包含loadproperties
task的脚本中再次阅读该值:
<loadproperties srcFile="yourFile" />