【问题标题】:How do I pass option to JavaPluginExtension using Kotlin DSL如何使用 Kotlin DSL 将选项传递给 JavaPluginExtension
【发布时间】:2021-08-26 04:48:08
【问题描述】:

我在将这些 gradle groovy 代码转换为 kotlin dsl 时遇到问题。

protobuf {
  protoc {
    artifact = 'com.google.protobuf:protoc:3.8.0'
  }
  generateProtoTasks {
    all().each { task ->
      task.builtins {
        java {
          option "lite"
        }
      }
    }
  }
}

尤其是 java 块中的 option "lite"

谢谢。

【问题讨论】:

    标签: android gradle gradle-kotlin-dsl protoc protobuf-java


    【解决方案1】:

    你可以用Kotlin DSL试试这个。

    build.gradle.kts

    protobuf {
        protoc {
            artifact = "com.google.protobuf:protoc:3.17.3"
        }
    
        generateProtoTasks {
            all().forEach {
                it.builtins {
                    create("java") {
                        option("lite")
                    }
                }
            }
        }
    }
    

    【讨论】:

    • create("java") 可能并不总是有效,就我而言,我使用的是getByName("java")。谢谢。
    • 并且还需要添加这些导入:import com.google.protobuf.gradle.generateProtoTasks import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protoc
    • 我发现如果你必须使用getByName(""),这意味着你已经创建了一个任务。应该是正确的,这将根据情况使用create("")getByName("")。至于导入,我使用`import com.google.protobuf.gradle.*`。我很感谢你的 cmets。
    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2021-11-13
    • 2021-01-30
    • 2011-03-13
    相关资源
    最近更新 更多