Gradle脚本:ant.copy任务中的类强制转换异常

Gradle脚本:ant.copy任务中的类强制转换异常,gradle,groovy,ant,Gradle,Groovy,Ant,我有一个Gradle脚本,其中我需要将一组文件从srcPath复制到tgtPath,同时指定include和exclude模式 通常情况下,我会使用Gradle的内置复制任务来执行此操作,但在这里,我还需要在执行此操作时转换字符编码。因此,我尝试使用ant.copy方法,因为它支持“encoding”和“outputEncoding”参数,这两个参数应该正好支持这样的转换 因此,我定义了一个方法,如下所示: private void copy(String srcPath, String tgt

我有一个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文件中),这就是为什么我在这里使用“new AntBuilder.copy(…)”而不是“ant.copy(…)”,我得到以下异常:

java.lang.ClassCastException:org.apache.xerces.parsers.XIncludeAwareParserConfiguration不能强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration

??这与XML解析有什么关系?我完全不明白为什么会出现这个错误。 我只找到了几个例子,但没有从Groovy中找到关于如何使用此方法的真正文档。Ant的文档声称“包含”和“排除”接受参数列表,这就是我在这里传递的内容。你知道,我在这里做错了什么,或者为什么这不起作用吗


或者关于在Gradle中复制文件时如何转换字符编码的任何其他建议?

我建议您使用Gradle的

例如:


谢谢!这就成功了!可惜我自己没有想到这一点。我错误地认为“new AntBuilder()”和“project.ant”是等价的,但显然不是这样。再次感谢!
project.ant.copy(todir: tgtPath, 
                          encoding: StandardCharsets.ISO_8859_1, 
                          outputEncoding: StandardCharsets.UTF_8) {
        fileset(dir: srcPath, 
                includes: includePatterns, 
                excludes: excludePatterns)
    }