Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在gradle copy任务中构建自己的自定义筛选器闭包_Gradle - Fatal编程技术网

如何在gradle copy任务中构建自己的自定义筛选器闭包

如何在gradle copy任务中构建自己的自定义筛选器闭包,gradle,Gradle,我相信我的背景可能与此类似 我正在阅读gradle Copy文档,实际上我想做如下事情: 关键是我不能使用Replace令牌,所以我尝试使用自己的闭包来处理这个问题。 我以为这会很容易,但我就是不能让它工作,因为它导致了一个奇怪的错误 这就是我得到的: copy { from "${project.buildDir}/tmp/tmp/${protobufName}/${protobufName}" { filter { Str

我相信我的背景可能与此类似

我正在阅读gradle Copy文档,实际上我想做如下事情:

关键是我不能使用Replace令牌,所以我尝试使用自己的闭包来处理这个问题。 我以为这会很容易,但我就是不能让它工作,因为它导致了一个奇怪的错误

这就是我得到的:

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)
    }
}