summaryrefslogtreecommitdiff
path: root/app/copyLibs.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'app/copyLibs.gradle')
-rw-r--r--app/copyLibs.gradle111
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.'
+}
+