Этот код использует задачу Groovy ANT для выполнения следующих действий:
- Реализация пользовательского селектора groovy, выбирающего файлы XML для обработки на основе проверки контрольной суммы MD5.
- Вызывать xmllint для каждого файла и сохранять контрольную сумму при успешном завершении (Это предотвращает повторное выполнение xmllint , если содержимое файла не изменяется.
Пример:
<project name="demo" default="xmllint">
<!--
======================
Groovy task dependency
======================
-->
<path id="build.path">
<pathelement location="jars/groovy-all-1.8.6.jar"/>
</path>
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<!--
==============================================
Select files to be processed
MD5 checksums located in "checksums" directory
==============================================
-->
<target name="select-files">
<fileset id="unprocessedfiles" dir=".">
<include name="*.xml"/>
<exclude name="build.xml"/>
<scriptselector language="groovy" classpathref="build.path">
def ant = new AntBuilder()
ant.checksum(file:filename, toDir:"checksums", verifyProperty:"isMD5ok")
self.selected = (ant.project.properties.isMD5ok == "false") ? true : false
</scriptselector>
</fileset>
</target>
<!--
=============================================================
Process each file
Checksum is saved upon command success, prevents reprocessing
=============================================================
-->
<target name="xmllint" depends="select-files">
<groovy>
project.references.unprocessedfiles.each { file ->
ant.exec(executable:"xmllint", resultproperty:"cmdExit") {
arg(value:file)
}
if (properties.cmdExit == "0") {
ant.checksum(file:file.toString(), toDir:"checksums")
}
}
</groovy>
</target>
</project>
Примечание :
- Это сложное требование не может быть реализовано с использованием исходной задачи ANT apply Один вызов команды xmllint может быть успешным, а другой - неудачным.
- Для хранения файлов контрольных сумм MD5 создается подкаталог с именем "контрольные суммы".
- Groovy jar можетможно загрузить с Maven Central
Оригинальный ответ
Использовать модифицированный селектор ANT
<project name="demo" default="xmllint">
<target name="xmllint">
<apply executable="xmllint">
<srcfile/>
<fileset dir="." includes="*.xml">
<modified/>
</fileset>
</apply>
</target>
</project>
Файл свойств с именем «cache.properties» будет создан впостроить каталог.Он записывает дайджесты файлов и определяет, был ли файл изменен с момента последнего запуска сборки.