└── gradle-core-variable-share/
├── api/
│ └── build.gradle.kts
├── shared/
│ └── build.gradle.kts
└── settings.gradle.kts
pluginManagement {
repositories {
mavenCentral()
}
}
rootProject.name = "gradle-core-variable-share"
include("shared", "api")
tasks.register("shared-task") {
val sharedMap = mutableMapOf(
"name" to "Max",
"age" to 31,
)
println("sharedMap in shared-task: $sharedMap")
rootProject.ext.set("sharedMap", sharedMap)
}
plugins {
id("java")
}
tasks.register("api-task") {
dependsOn(":shared:shared-task")
doFirst {
val sharedMap = rootProject.ext.get("sharedMap") as MutableMap<String, Any>
println("sharedMap in api-task: $sharedMap")
}
}
./gradlew :api:api-task
> Configure project :shared
sharedMap in shared-task: {name=Max, age=31}
> Task :api:api-task
sharedMap in api-task: {name=Max, age=31}
BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed
위에서 본 것처럼 dependsOn
함수를 사용하여 task 간에 순서를 정해줄 수 있습니다. 주의할 점은 api-task
안에서 수행할 내용은 doFirst
혹은 doLast
dsl 안에서 수행해줘야 한다는 것입니다. 위 코드는 아래 github 에서 참조하실 수 있습니다.