如何将命令行参数传递给 Gradle Kotlin DSL

How to pass command line argument to Gradle Kotlin DSL

这是来自 Groovy 的示例,它完全代表了我想要实现的目标:

Command line:

./gradlew jib -PmyArg=hello

build.gradle.kts

task myTask {
    doFirst {
       println myArg
       ... do what you want
    }
}

此示例的来源是 here - option 3

如何在 Kotlin DSL 中读取传递和读取 myArg 值?

一段时间后找到答案:

build.gradle.kts

val myArg: String by project // Command line argument is always a part of project

task("myTask") {
    doFirst {
        if (project.hasProperty("myArg")) {
            println(myArg)
        }
    }
}

Command line:

gradle myTask -PmyArg=foo

Output:

$ gradle myTask -PmyArg=foo

> Task :myTask
foo

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

相关链接:

  • How to pass arguments from command line to gradle
  • How to pass parameters or arguments into a gradle task

我像这样检索了我的任务的参数(build.gradle.kts 和 Kotlin DSL):

tasks.create("myCustomTask") {
  doLast {
    val myArg = properties["myArgName"]
    // OR a more verbose form:
    val myArg = project.properties["myArgName"]
  }
}
./gradlew myCustomTask -PmyArgName=hello