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

skr*_*ets 10 groovy gradle kotlin

这是来自 Groovy 的一个示例,它准确地代表了我想要实现的目标:

Command line

./gradlew jib -PmyArg=hello
Run Code Online (Sandbox Code Playgroud)

build.gradle.kts

task myTask {
    doFirst {
       println myArg
       ... do what you want
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例的来源在这里 - 选项 3

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

skr*_*ets 12

一段时间后找到答案:

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Command line

gradle myTask -PmyArg=foo
Run Code Online (Sandbox Code Playgroud)

Output

$ gradle myTask -PmyArg=foo

> Task :myTask
foo

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed
Run Code Online (Sandbox Code Playgroud)

相关链接:

  • 这对我来说不起作用,因为变量“myArg”在 build.gradle.kts 的编译时未定义。它与 `project.properties["myArg"]` 一起使用。 (2认同)

Mah*_*zad 6

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

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


归档时间:

查看次数:

3879 次

最近记录:

6 年,3 月 前