【问题标题】:Ant + Keeping a control valueAnt + 保持控制值
【发布时间】:2010-02-10 23:11:24
【问题描述】:

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

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

有什么想法吗?

提前致谢。

【问题讨论】:

    标签: java file ant controls


    【解决方案1】:

    应该在 Ant 之外完成。用你知道的任何语言(bash、Python、JavaScript 等)编写一个脚本来执行计算、检查并在需要时使用该值作为参数调用 Ant。

    Ant 不打算成为一种脚本语言。人们试图这样做时会遇到麻烦。

    【讨论】:

    • 嘘。我希望“蚂蚁不是脚本语言”不会出现。问题是 ant 是我在这个项目中唯一的“脚本”可能性。
    • 您使用的是什么操作系统?您不能在 Windows 上使用批处理或命令文件,或者在 *nix 中使用 cshell?你总是有选择的。
    【解决方案2】:

    我没有尝试过,但是你可以这样做:

    像这样使用条件任务

    <condition property="exectask">
       <equals arg1="${prop1}" arg2="${prop2}" trim="true"/>
    </condition>
    

    然后根据属性值调用一个目标

    <target name="dosomethingifcontrolvaluediffers" unless="${exectask}">
    </target>
    

    希望对你有帮助。

    【讨论】:

    • 我明白你的意思,但事情就是这样。 prop1 可以计算,但我的问题是“我如何获得 prop2”。另外,我如何在目标内部更新它。谢谢。
    • 对不起,我不明白:S 也许 prop2 是控制值?
    【解决方案3】:

    正如 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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 2015-07-28
      • 1970-01-01
      相关资源
      最近更新 更多