Dependency scope records whether a library is needed by production code, tests, or both.

dependency scope Scope keeps dependency intent visible so a test helper does not become part of the runtime artifact.

Dependency Scope Model

scope
DependencyScopeModel.kt
Replay: real traced execution (multi-file project)
fun main() {
    val scope = "implementation"
    val dependency = mapOf(
        "group" to "org.example",
        "name" to "toolkit",
        "version" to "1.2.0"
    )
    val coordinate = "${dependency["group"]}:${dependency["name"]}:${dependency["version"]}"
    val packaged = scope == "implementation" || scope == "runtimeOnly"

    println("scope=$scope")
    println("coordinate=$coordinate")
    println("packaged=$packaged")
}
fun main() {
    val scope = "testImplementation"
    val dependency = mapOf(
        "group" to "org.example",
        "name" to "toolkit",
        "version" to "1.2.0"
    )
    val coordinate = "${dependency["group"]}:${dependency["name"]}:${dependency["version"]}"
    val packaged = scope == "implementation" || scope == "runtimeOnly"

    println("scope=$scope")
    println("coordinate=$coordinate")
    println("packaged=$packaged")
}
fun main() {
    val scope = "runtimeOnly"
    val dependency = mapOf(
        "group" to "org.example",
        "name" to "toolkit",
        "version" to "1.2.0"
    )
    val coordinate = "${dependency["group"]}:${dependency["name"]}:${dependency["version"]}"
    val packaged = scope == "implementation" || scope == "runtimeOnly"

    println("scope=$scope")
    println("coordinate=$coordinate")
    println("packaged=$packaged")
}
  1. scope ← implementation, dependency ← {group=org.example, name=toolkit, version=1.2.0}

    1fun main() {2    val scope→ implementation = "implementation" //@scope="testImplementation", "runtimeOnly"3    val dependency→ {group=org.example, name=toolkit, version=1.2.0} = mapOf(4        "group" to "org.example",5        "name" to "toolkit",6        "version" to "1.2.0"7    )8    val coordinate→ org.example:toolkit:1.2.0 = "${dependency["group"]org.example}:${dependency["name"]toolkit}:${dependency["version"]1.2.0}"9    val packaged→ true = scopeimplementation == "implementation" || scope == "runtimeOnly"1011    println("scope=$scopeimplementation")12    println("coordinate=$coordinateorg.example:toolkit:1.2.0")13    println("packaged=$packagedtrue")14}
    outputscope=implementation
    coordinate=org.example:toolkit:1.2.0
    packaged=true
  1. scope ← testImplementation, dependency ← {group=org.example, name=toolkit, version=1.2.0}

    1fun main() {2    val scope→ testImplementation = "testImplementation"3    val dependency→ {group=org.example, name=toolkit, version=1.2.0} = mapOf(4        "group" to "org.example",5        "name" to "toolkit",6        "version" to "1.2.0"7    )8    val coordinate→ org.example:toolkit:1.2.0 = "${dependency["group"]org.example}:${dependency["name"]toolkit}:${dependency["version"]1.2.0}"9    val packaged→ false = scopetestImplementation == "implementation" || scope == "runtimeOnly"1011    println("scope=$scopetestImplementation")12    println("coordinate=$coordinateorg.example:toolkit:1.2.0")13    println("packaged=$packagedfalse")14}
    outputscope=testImplementation
    coordinate=org.example:toolkit:1.2.0
    packaged=false
  1. scope ← runtimeOnly, dependency ← {group=org.example, name=toolkit, version=1.2.0}

    1fun main() {2    val scope→ runtimeOnly = "runtimeOnly"3    val dependency→ {group=org.example, name=toolkit, version=1.2.0} = mapOf(4        "group" to "org.example",5        "name" to "toolkit",6        "version" to "1.2.0"7    )8    val coordinate→ org.example:toolkit:1.2.0 = "${dependency["group"]org.example}:${dependency["name"]toolkit}:${dependency["version"]1.2.0}"9    val packaged→ true = scoperuntimeOnly == "implementation" || scope == "runtimeOnly"1011    println("scope=$scoperuntimeOnly")12    println("coordinate=$coordinateorg.example:toolkit:1.2.0")13    println("packaged=$packagedtrue")14}
    outputscope=runtimeOnly
    coordinate=org.example:toolkit:1.2.0
    packaged=true