111 lines
3.2 KiB
Groovy
111 lines
3.2 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 + 'src' + File.separator + 'main' + 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 + 'src' + File.separator + 'main' + 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.'
|
|
}
|
|
|