aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--app/build.gradle10
-rw-r--r--app/copyLibs.gradle111
3 files changed, 123 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 6ffad81e..4873def8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,10 @@ pom.xml.*
.settings
.metadata
+#Eclipse/Gradle integration
+libs
+project.properties
+
#IntelliJ IDEA
.idea
*.iml
diff --git a/app/build.gradle b/app/build.gradle
index 26a2cd04..c2842999 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,9 +1,10 @@
apply plugin: 'com.android.application'
+apply from: 'copyLibs.gradle' // enable 'copyLibs.gradle' script plugin
+apply plugin: 'eclipse'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
-
defaultConfig {
applicationId "com.zeapo.pwdstore"
minSdkVersion 15
@@ -23,7 +24,7 @@ repositories {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
+ //compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libraries:openpgp-api-lib')
compile 'org.eclipse.jgit:org.eclipse.jgit:3.4.1.+'
compile 'org.apache.commons:commons-io:1.3.2'
@@ -31,3 +32,8 @@ dependencies {
transitive = true
}
}
+tasks.findAll { // make all tasks whose name starts with 'assemble'...
+ it.name.startsWith 'assemble'
+}.each { // ... depending on 'copyDependenciesIntoLibs' task from 'copyLibs.gradle' script plugin
+ it.dependsOn copyDependenciesIntoLibs
+}
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.'
+}
+