Выполнение простых вычислений с помощью собственных задач Ant - PullRequest
2 голосов
/ 01 сентября 2010

Используя только собственные задачи ANT, как я могу создать пользовательскую задачу ANT для выполнения следующих действий:

  • Рассчитать количество дней с 1 января 2000 года по местному времени и сохранить его в свойстве,
  • Рассчитать количество секунд с полуночи по местному времени, разделенное на 2, и сохранить его в свойстве.

Указанные выше значения свойства будут добавлены в другие и записаны в файл.

1 Ответ

2 голосов
/ 02 сентября 2010

ANT не является языком программирования общего назначения, поэтому вам нужно написать пользовательское задание или использовать что-то вроде groovy plugin

В следующем примере демонстрируется, как задача Groovy, использующая библиотеку Joda Time , может задать свойства, указанные вами.

<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 на вашем пути к классам:

  • заводной-все-1.7.4.jar
  • Joda-времени 1.6.1.jar

Я бы порекомендовал использовать плагин ivy для управления ими, добавив цель «разрешения», которая загружает файлы jar и автоматически устанавливает classpath:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...