Приведенный ниже фрагмент ant из цели, указанной в каталоге Grails «Scripts», создает один файл с контрольными суммами всех классов, чтобы их можно было проверить на целевых серверах.
Вывод муравья — это такой файл:
c9b1c71b31e53e99ff31b4be0a1284558aa019ec target/classes/bo/ApiRequestFilters$_closure1.class
ff936fddc1b99ba323493b131d271ca4feb0f5dd target/classes/bo/ApiRequestFilters.class
df7a12fe1182b5fc10177a2559a3a0cbb0709e29 target/classes/com/xxx/yyy/apiConstants.class
Проблема в слове «цель» в пути к файлу. Когда приложение развернуто на tomcat под веб-приложением, цели нет.
Как этого избежать? Например. если функция ant.concat взяла baseir:"target", если бы вы могли сделать ant.cd("target") или подобное, это решило бы проблему, или если бы вы могли указать baseir для каждой цели, но это не похоже возможный?
Источник:
ant.checksum(fileext:".sha1", algorithm: "SHA", forceoverwrite: "yes", pattern: "{0} {3}") {
fileset(dir: "target/classes") {
include(name:"**/*.class")
}
}
ant.concat(destfile:"target/classes.sha1") {
fileset(dir: "target/classes") {
include(name:"**/*.sha1")
}
}
Я нашел один хакерский способ - удалить "target/" из файла sha1 после использования:
ant.replace(file:"target/classes.sha1", token:" target/", value: " ")
Есть ли способ лучше?