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)
 | |
| }
 |