如何在gradle copy任务中构建自己的自定义筛选器闭包
我相信我的背景可能与此类似 我正在阅读gradle Copy文档,实际上我想做如下事情: 关键是我不能使用Replace令牌,所以我尝试使用自己的闭包来处理这个问题。 我以为这会很容易,但我就是不能让它工作,因为它导致了一个奇怪的错误 这就是我得到的:如何在gradle copy任务中构建自己的自定义筛选器闭包,gradle,Gradle,我相信我的背景可能与此类似 我正在阅读gradle Copy文档,实际上我想做如下事情: 关键是我不能使用Replace令牌,所以我尝试使用自己的闭包来处理这个问题。 我以为这会很容易,但我就是不能让它工作,因为它导致了一个奇怪的错误 这就是我得到的: copy { from "${project.buildDir}/tmp/tmp/${protobufName}/${protobufName}" { filter { Str
copy {
from "${project.buildDir}/tmp/tmp/${protobufName}/${protobufName}" {
filter {
String line -> line.replaceAll(A_PROTO_PACKAGE, B_PROTO_PACKAGE)
}
}
into "${project.buildDir}/tmp/processed-protos/${protobufName}"
}
而gradle在这之后甚至不再工作了,因为它真的破坏了设置
Could not find method C:\dev\repo\connector-protos\build/tmp/tmp/authr_doc/authr_doc() for arguments [build_englvplwg0k6u9knec1bhhrel$_run_closure7$_closure21$_closure22@1a738cf4] on object of type org.gradle.api.internal.file.copy.CopySpecWrapper_Decorated.
简而言之,authr_文档是我文件内容的第一行,但我真的不明白为什么这不起作用。
有什么想法吗?这可能是非常基本的,我对闭包的了解也不多,但简单的字符串替换应该很容易做到,但不知何故,我被困在这里了我认为解决方案就在这里: 可能正是我在错误的位置应用过滤器的方式:
copy {
from "${project.buildDir}/tmp/${protobufName}/${protobufName}"
into "${project.buildDir}/tmp/processed-protos/${protobufName}"
filter {
String line -> line.replaceAll(A_PROTO_PACKAGE, B_PROTO_PACKAGE)
}
}
copy {
from "${project.buildDir}/tmp/${protobufName}/${protobufName}"
into "${project.buildDir}/tmp/processed-protos/${protobufName}"
filter {
String line -> line.replaceAll(A_PROTO_PACKAGE, B_PROTO_PACKAGE)
}
}