112 lines
3.1 KiB
Groovy
112 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.'
|
||
|
}
|
||
|
|