diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | app/build.gradle | 10 | ||||
-rw-r--r-- | app/copyLibs.gradle | 111 |
3 files changed, 123 insertions, 2 deletions
@@ -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.' +} + |