【问题标题】:How to pass command line argument to Gradle Kotlin DSL如何将命令行参数传递给 Gradle Kotlin DSL
【发布时间】:2019-10-25 09:43:00
【问题描述】:

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

Command line:

./gradlew jib -PmyArg=hello

build.gradle.kts

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

这个例子的来源是here - option 3

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

【问题讨论】:

    标签: kotlin gradle groovy build.gradle gradle-kotlin-dsl


    【解决方案1】:

    我像这样(Kotlin DSL)检索了我的任务的参数:

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

    【讨论】:

      【解决方案2】:

      一段时间后找到答案:

      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
      

      相关链接:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-27
        • 1970-01-01
        相关资源
        最近更新 更多