如何在Gradle中添加多个相同类型的任务?

How to add multiple tasks of the same type in Gradle?

我需要在构建之前从 *.fbs 文件生成 FlatBuffers 文件。 所以我正在使用 gradle.plugin.io.netifi:gradle-flatbuffers-plugin:1.0.7 为我做这件事。

1 个任务按预期工作:

def generatedSourcePathJava = "$buildDir/generated/source/flatbuffers/java"
def generatedSourcePathCpp = "$buildDir/generated/source/flatbuffers/cpp"

...

task createFlatBuffersJava(type: io.netifi.flatbuffers.plugin.tasks.FlatBuffers) {
  outputDir = file(generatedSourcePathJava)
  language = "kotlin"
}

build.dependsOn createFlatBuffersJava

但是如果我添加第二个(为 JNI 生成 C++ 文件):

task createFlatBuffersJava(type: io.netifi.flatbuffers.plugin.tasks.FlatBuffers) {
  outputDir = file(generatedSourcePathJava)
  language = "kotlin"
}

task createFlatBuffersCpp(type: io.netifi.flatbuffers.plugin.tasks.FlatBuffers) {
  outputDir = file(generatedSourcePathCpp)
  language = "cpp"
}

assemble.dependsOn createFlatBuffersJava, createFlatBuffersCpp

Gradle 构建 (../gradlew :engine-flatbuffers:clean :engine-flatbuffers:build) 失败并显示以下内容:

  • What went wrong: A problem occurred configuring project ':engine-flatbuffers'. java.util.ConcurrentModificationException (no error message)

我认为这个问题可以概括为“如何在 Gradle 中添加多个相同类型的任务?”。

PS。 “gradle-5.6-全部

这是 bug/feature 在 https://github.com/gregwhitaker/gradle-flatbuffers-plugin/issues/7 上报告的已知插件。

它在 1.0.5 中有效,但遗憾的是 kotlin [参数] 在那一点上不受支持。 java 有效且兼容。