Android-Password-Store/app/copyLibs.gradle
2014-09-21 15:36:23 +02:00

111 lines
3.1 KiB
Groovy

class CopyJars extends DefaultTask {
@InputFiles
FileCollection source
@OutputDirectory
File destination
@TaskAction
void apply() {
project.copy {
from source
into destination
}
}
}
class ExtractAars extends DefaultTask {
@Input
boolean extractJarsOnly = false
@InputFiles
FileCollection source
@OutputDirectory
File destination
@TaskAction
void apply() {
source.each { File file ->
def baseFilename = file.name.lastIndexOf('.').with {
it != -1 ? file.name[0..< it] : file.name
}
if (extractJarsOnly) {
project.copy {
from project.zipTree(file)
include 'classes.jar'
into destination.name
rename {
String fileName -> fileName.replace('classes.jar', baseFilename + '.jar')
}
}
} else {
project.copy {
from project.zipTree(file)
exclude 'classes.jar'
into destination.absolutePath + File.separator + baseFilename
}
project.copy {
from project.zipTree(file)
include 'classes.jar'
into destination.absolutePath + File.separator + baseFilename +
File.separator + destination.name
rename {
String fileName -> fileName.replace('classes.jar', baseFilename + '.jar')
}
}
}
}
}
}
task ('copyJarDependenciesIntoLibs', type: CopyJars) {
description = 'Used for Eclipse. Copies JAR dependencies to the libs directory.'
destination = file(project.projectDir.canonicalPath + File.separator + 'libs')
afterEvaluate {
source = files(
project.configurations.matching {
it.name.endsWith 'Compile' or it.name == 'compile'
}.each {
logger.info "Adding dependencies from ${it.name} configuration."
}
).filter {
it.name.endsWith 'jar'
}
logger.info source.files.toString()
}
}
task ('extractAarDependenciesIntoLibs', type: ExtractAars) {
description = 'Used for Eclipse. Extracts AAR dependencies into the libs directory.'
destination = file(project.projectDir.canonicalPath + File.separator + 'libs')
afterEvaluate {
source = files(
project.configurations.matching {
it.name.endsWith 'Compile' or it.name == 'compile'
}.each {
logger.info "Adding dependencies from ${it.name} configuration."
}
).filter {
it.name.endsWith 'aar'
}
logger.info source.files.toString()
}
}
task copyDependenciesIntoLibs {
dependsOn copyJarDependenciesIntoLibs, extractAarDependenciesIntoLibs
description = 'Used for Eclipse. Copies JAR and extracts AAR dependencies into the libs ' +
'directory.'
}