38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
|
plugins {
|
||
|
base
|
||
|
}
|
||
|
|
||
|
description = """
|
||
|
Demonstrates Gradle Configuraiton Avoidance API. Creates a new configuration "extralibs" to
|
||
|
which we add dependencies. The custom task "copyExtraLibs" copies those dependencies to a new
|
||
|
build directory "extra-libs". This build uses the Task Configuraion Avoidance APIs which have
|
||
|
been marked stable in Gradle 6.0
|
||
|
""".trimIndent()
|
||
|
|
||
|
// extraLibs is a NamedDomainObjectProvider<Configuration!> - the Configuration object will not be
|
||
|
// realized until it is needed. In the meantime, the build may reference it by name
|
||
|
val extralibs by configurations.registering
|
||
|
|
||
|
dependencies {
|
||
|
// we can call extralibs.name without causing the extralibs to be realized
|
||
|
add(extralibs.name, "junit:junit:4.12")
|
||
|
}
|
||
|
|
||
|
// extraLibsDir is a Provider<Directory!> - the Directory object will not be realized until it is
|
||
|
// needed
|
||
|
val extraLibsDir = project.layout.buildDirectory.dir("extra-libs")
|
||
|
|
||
|
// copyExtraLibs is a TaskProvider<Copy!> - the task will not be realized until it is needed
|
||
|
val copyExtraLibs by tasks.registering(Copy::class) {
|
||
|
// the copy task's "from" and "into" APIs accept Provider types to support configuration
|
||
|
// avoidance
|
||
|
from(extralibs)
|
||
|
into(extraLibsDir)
|
||
|
}
|
||
|
|
||
|
// configures the "build" task only if it needs to be
|
||
|
tasks.build {
|
||
|
// dependsOn accepts a TaskProvider to avoid realizing the copyExtraLibs needlessly
|
||
|
dependsOn(copyExtraLibs)
|
||
|
}
|