У меня есть скрипт Gradle, в котором мне нужно скопировать кучу файлов из srcPath в tgtPath, указав шаблоны include и exclude.
Обычно я делал бы это с помощью встроенной в Gradle задачи копирования, но здесь мне также нужно при этом конвертировать кодировку символов. Поэтому я пытаюсь использовать метод ant.copy, потому что он поддерживает аргументы «encoding» и «outputEncoding», которые должны поддерживать именно такие преобразования.
Итак, я определил мне метод следующим образом:
private void copy(String srcPath, String tgtPath, includePatterns = ['**/*'], excludePatterns = []) {
println "copying from '${srcPath}' to '${tgtPath}' (incl:'${includePatterns}' / excl:'${excludePatterns}'):"
new AntBuilder().copy(todir: tgtPath,
encoding: StandardCharsets.ISO_8859_1,
outputEncoding: StandardCharsets.UTF_8) {
fileset(dir: srcPath,
includes: includePatterns,
excludes: excludePatterns)
}
}
Когда я выполняю это как часть моей сборки Gradle (фактически внутри файла .groovy, именно поэтому я использую здесь «новый AntBuilder.copy (...)» вместо просто «ant.copy (...)» «Я получаю следующее исключение:
java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration не может быть приведен к org.apache.xerces.xni.parser.XMLParserConfiguration
??? Какое отношение это имеет к XML-парсингу? Я вообще не понимаю, почему я получаю эту ошибку.
Я нашел только пару примеров, но никакой реальной документации о том, как использовать этот метод от Groovy. Документация Ant утверждает, что «включает» и «исключает» принимает списки аргументов, что я и передаю здесь. Любая идея, что я здесь делаю неправильно или почему это не работает?
Или какие-либо другие предложения о том, как преобразовать кодировки символов при копировании файлов в Gradle?