summaryrefslogtreecommitdiff
path: root/app/copyLibs.gradle
diff options
context:
space:
mode:
authorMohamed Zenadi <mohamed.zenadi@gmail.com>2014-09-21 16:34:49 +0200
committerMohamed Zenadi <mohamed.zenadi@gmail.com>2014-09-21 16:34:49 +0200
commit08ce874009e1459dbf6b1f2f0b061381e011f7f2 (patch)
treeea99c82c7455c88c80f0234f4a6ae02daf6d79dd /app/copyLibs.gradle
parent6c55f1ed2bf263f9ab8fac1de6877937b69d6992 (diff)
parent7af6cb37ce4ef4e9fbe1aa6bab6149d68c7f3e53 (diff)
Merge pull request #7 from kLeZ/eclipse-integration
Added Eclipse Integration
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.'
+}
+