Gradle Task に引数を渡す
Gradle Task を実行するときに引数を渡したいときがあると思います。
build.gradle内で完結している場合には、以下のように lateinit var な変数を定義すれば値を渡すことができます。
lateinit var userName: String
さて、build.gradle.kts 内に留まらず、terminal等から呼び出すときにはどうすればいいでしょうか。
まぁ、結果から言うと以下のように設定すればいけます。 プロパティを定義してそこにオプションであることを明示してあげるといける。
@Suppress("UnstableApiUsage") @set:Option(option = "userAge", description = "this is stand for user age") @get:Input lateinit var age: String
Gradle Task の実行結果を読み取る
同じプログラム内から呼び出してるときはシュッとできますが、ここで書くのは外部から呼び出すときです。
具体的には、terminal から Gradle Custom task を呼び出すときに値を返したい的な。
結論からいくと プログラム内から標準出力して表示してシェル芸なりなんなりしてよしなに処理すればいける。
プログラム全体像
SampllteTask.kt
import org.gradle.api.DefaultTask import org.gradle.api.tasks.Input import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option open class SampleTask : DefaultTask() { lateinit var userName: String @Suppress("UnstableApiUsage") @set:Option(option = "userAge", description = "this is stand for user age") @get:Input lateinit var age: String @TaskAction fun print() { print("Hello ${userName} your ${age} yeard-old") } }
build.gradle
task sample(type: SampleTask) {
userName = "kuu"
}
出力例
./gradlew sample --userAge="21" -q Hello kuu your 21 yeard-old⏎