blob: 410a1df7cab7d420e03abb5de790c657b6a9e3b6 [file] [log] [blame]
apply plugin: 'java'
evaluationDependsOn(':third_party:gif_decoder')
evaluationDependsOn(':third_party:disklrucache')
evaluationDependsOn(':library')
def getAndroidSdkDirectory() {
project(':library').android.sdkDirectory
}
def getAndroidCompileSdkVersion() {
project(':library').android.compileSdkVersion
}
def getInternalAndroidProjects() {
[':third_party:gif_decoder', ':third_party:gif_encoder', ':library'].collect { project(it) }
}
def getInternalJavaProjects() {
[':third_party:disklrucache'].collect { project(it) }
}
def getAllInternalProjects() {
getInternalAndroidProjects() + getInternalJavaProjects()
}
def getReleaseVariantAndroidProjects() {
getAndroidLibraryVariants('release')
}
def getAndroidLibraryVariants(variantName) {
getInternalAndroidProjects().collect { project ->
project.android.libraryVariants.findAll { type ->
type.buildType.name.equalsIgnoreCase(variantName)
}
}.sum()
}
def getSourceFilesForVariant(variantName) {
getAndroidLibraryVariants(variantName).collect { it.javaCompile.source } +
getInternalJavaProjects().collect { it.sourceSets.main.allJava }
}
def getAndroidJar() {
"${getAndroidSdkDirectory()}/platforms/${getAndroidCompileSdkVersion()}/android.jar"
}
// Generate javadocs and sources containing batched documentation and sources for all internal projects.
['release', 'debug'].each { variantName ->
task("${variantName}SourceJar", type: Jar) {
from getSourceFilesForVariant(variantName)
}
def javadocTask = task("${variantName}Javadoc", type: Javadoc) {
source = getSourceFilesForVariant(variantName)
classpath = files(getAndroidLibraryVariants(variantName).collect {
files(it.javaCompile.classpath.files, getAndroidJar())
})
classpath += getInternalJavaProjects().collect { files(it.configurations.compile) }
options {
links("http://docs.oracle.com/javase/7/docs/api/")
linksOffline("http://d.android.com/reference", "${getAndroidSdkDirectory()}/docs/reference")
}
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
def cleanJavadocTask = task("clean${variantName.capitalize()}Javadoc", type: Delete) {
delete javadocTask.destinationDir
}
clean.dependsOn(cleanJavadocTask)
def javadocJarTask = task("${variantName}JavadocJar", type: Jar) {
from javadocTask.destinationDir
}
javadocJarTask.dependsOn(javadocTask)
}
jar {
from files(
getReleaseVariantAndroidProjects().collect { variant ->
variant.javaCompile.destinationDir
}
)
exclude "**/R.class"
exclude "**/BuildConfig.class"
from files(getInternalJavaProjects().collect { it.sourceSets.main.output })
}
getAllInternalProjects().each { project ->
jar.dependsOn(project.build)
}
artifacts {
archives releaseJavadocJar {
classifier 'javadoc'
}
archives releaseSourceJar {
classifier 'sources'
}
}
apply from: "$rootProject.projectDir/scripts/upload.gradle"