使用本机Ant任务执行简单计算

时间:2010-09-01 15:44:16

标签: scripting ant

仅使用本机ANT任务,如何创建自定义ANT任务以执行以下操作:

  • 计算自2000年1月1日当地时间以来的天数,并将其存储在一个属性中。
  • 计算自当地时间午夜起的秒数除以2并将其存储在属性中。

然后,上述属性值将附加到其他属性值并写入文件。

1 个答案:

答案 0 :(得分:2)

ANT不是通用编程语言,因此您需要编写自定义任务或者使用类似groovy plugin

的内容

以下示例演示了使用Joda Time库的groovy任务如何设置您指定的属性。

<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<groovy>
    import org.joda.time.*

    def now      = new DateTime()
    def midnight = new DateMidnight()
    def year2000 = new DateTime(2000,1,1,0,0,0,0)

    properties["year2000.days"] = Days.daysBetween(year2000, now).days
    properties["midnight.seconds"] = Seconds.secondsBetween(midnight, now).seconds
    properties["midnight.seconds.halved"] = Seconds.secondsBetween(midnight, now).dividedBy(2).seconds
</groovy>

我不能高度推荐Joda Time,Java中的标准日期和时间操作很糟糕!

附加说明

上面的常规任务将需要您的类路径上的以下jar:

  • Groovy的全1.7.4.jar
  • 乔达 - 时间 - 1.6.1.jar

我建议使用ivy插件通过添加“resolve”目标来管理这些内容,该目标会下载jar并自动设置类路径:

<target name="resolve">
    <ivy:resolve/>
    <ivy:cachepath pathid="build.path"/>
</target>

以下是列出要下载的依赖项的 ivy.xml

<ivy-module version="2.0">
    <info organisation="org.myspotontheweb" module="demo"/>
    <dependencies>
        <dependency org="org.codehaus.groovy" name="groovy-all" rev="1.7.4" conf="default"/>
        <dependency org="joda-time" name="joda-time" rev="1.6.1" conf="default"/>
    </dependencies>
</ivy-module>