Ant +保持控制值

时间:2010-02-10 23:11:25

标签: java file ant controls

我需要保留一个控制值(可能在文件中),以决定是否执行任务。

我来自这里: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。

有什么想法吗?

提前致谢。

3 个答案:

答案 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" />