diff options
Diffstat (limited to 'app/copyLibs.gradle')
-rw-r--r-- | app/copyLibs.gradle | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/app/copyLibs.gradle b/app/copyLibs.gradle new file mode 100644 index 00000000..a8555cb0 --- /dev/null +++ b/app/copyLibs.gradle @@ -0,0 +1,111 @@ +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.' +} + |