Search code examples
kotlingradlegroovybuild.gradlegradle-kotlin-dsl

How to pass command line argument to Gradle Kotlin DSL


Here's an example from Groovy that represents exactly what I would like to achieve:

Command line:

./gradlew jib -PmyArg=hello

build.gradle.kts

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

Source of this example is here - option 3.

How can I read pass and read myArg value in Kotlin DSL ?


Solution

  • After some time found an answer:

    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
    

    Related links: