|
//
|
|
// Gradle task that creates the JDEE project file to andorid
|
|
//
|
|
|
|
import static groovy.io.FileType.FILES
|
|
|
|
def jarFiles = { project ->
|
|
def folder = new File("${project.buildDir}/intermediates")
|
|
def files = []
|
|
|
|
if( folder.exists() ) {
|
|
// if exist look for jars
|
|
folder.eachFileRecurse(FILES) {
|
|
if(it.name.endsWith('.jar')) {
|
|
files << it.getAbsolutePath()
|
|
}
|
|
}
|
|
}
|
|
files
|
|
}
|
|
|
|
def getImplementation = { project ->
|
|
def files = []
|
|
def transforms = []
|
|
|
|
// get dependencies jars
|
|
project.configurations.implementationDeps.each { dep ->
|
|
if(dep.name.endsWith('.jar')) {
|
|
files << dep.getAbsolutePath()
|
|
} else {
|
|
// get jar from aar
|
|
def cacheFolder = new File("${System.getProperty('user.home')}/.gradle/caches")
|
|
|
|
if( cacheFolder.exists() ) {
|
|
cacheFolder.eachFileRecurse(FILES) {
|
|
if(!transforms.contains(dep.name) && it.path.contains(dep.name) &&
|
|
it.name.endsWith('.jar')) {
|
|
transforms << dep.name
|
|
files << it.getAbsolutePath()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
files
|
|
}
|
|
|
|
def generatedDirs = { project ->
|
|
def folder = new File("${project.buildDir}/generated")
|
|
def dirs = []
|
|
|
|
if( folder.exists() ) {
|
|
folder.eachDirRecurse { dir ->
|
|
if (!(dir ==~ /.*generated\/res\/.*/)) {
|
|
dirs << dir
|
|
}
|
|
}
|
|
}
|
|
dirs
|
|
}
|
|
|
|
def prj = { project ->
|
|
"(jdee-project-file-version" (["1.0"])
|
|
"(jdee-set-variables" {
|
|
"'(jdee-compile-option-directory" (["${project.buildDir}"])
|
|
"'(jdee-junit-working-directory" ([])
|
|
|
|
"'(jdee-compile-option-source" {
|
|
"'(" (["default", "${project.targetCompatibility}"])
|
|
}
|
|
|
|
"'(jdee-compile-option-target" {
|
|
"'(" (["default", "${project.sourceCompatibility}"])
|
|
}
|
|
|
|
"'(jdee-sourcepath" {
|
|
"'(" (
|
|
["${project.projectDir}/src/androidTest/java"]
|
|
+ project.android.sourceSets.main.java.srcDirs
|
|
+ android.sourceSets.test.java.srcDirs
|
|
+ project.android.sourceSets.test.java.srcDirs
|
|
+ project.android.sourceSets.main.assets.srcDirs
|
|
+ project.android.sourceSets.main.renderscript.srcDirs
|
|
+ project.android.sourceSets.main.res.srcDirs
|
|
+ project.android.sourceSets.main.aidl.srcDirs
|
|
+ project.android.sourceSets.main.jniLibs.srcDirs
|
|
+ project.android.sourceSets.main.resources.srcDirs
|
|
+ (([] as Set) + generatedDirs(project))
|
|
)
|
|
}
|
|
|
|
"'(jdee-global-classpath" {
|
|
"'(" (
|
|
["${project.buildDir}/intermediates/classes/debug",
|
|
"${project.buildDir}/intermediates/classes/test/debug"]
|
|
+ android.getBootClasspath()
|
|
+ configurations.archives.allArtifacts.getFiles()
|
|
+ project.compileDebugJavaWithJavac.destinationDir
|
|
+ project.compileReleaseJavaWithJavac.destinationDir
|
|
+ (([] as Set) + project.configurations.compile.getFiles()
|
|
+ project.configurations.testCompile.getFiles()
|
|
+ getImplementation(project)
|
|
+ jarFiles(project)
|
|
))
|
|
}
|
|
}
|
|
}
|
|
|
|
projects {
|
|
task("jdee") {
|
|
doLast {
|
|
def output = new File(project.projectDir, "prj.el").newPrintWriter()
|
|
output.print ';;\n'
|
|
output.print ';; This is a generated file.\n'
|
|
output.print ';; To recreate, run "`gradlew jdee` or `gradlew assemble jdee`".\n'
|
|
output.print ';;\n'
|
|
try {
|
|
prj.delegate = new NodeBuilder() {
|
|
def lev = 0
|
|
|
|
def write = { Object file ->
|
|
output.print '\n' + ''.padRight(lev, ' ') + "\"${file}\"".tr('\\', '/')
|
|
}
|
|
|
|
Object createNode(Object name) {
|
|
output.print '\n' + ''.padRight(lev++, ' ') + name
|
|
return name
|
|
}
|
|
|
|
Object createNode(Object name, Object value) {
|
|
createNode(name)
|
|
value.each write
|
|
return name
|
|
}
|
|
|
|
void nodeCompleted(Object parent, Object child) {
|
|
output.print ")"
|
|
lev--
|
|
}
|
|
}
|
|
|
|
prj(project)
|
|
output.close()
|
|
} finally {
|
|
output.flush()
|
|
}
|
|
}
|
|
}
|
|
}
|