blob: 84cdf200a2ebf451fdb90a0b4330d287d9d8c372 [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
configurations {
doclava
}
dependencies {
doclava project(':doclava')
}
void addJavadocTasks(Project project, Task topTask, String variantName, JavaCompile javaCompile) {
Task genJavadoc = project.tasks.findByName("generate${variantName.capitalize()}Javadoc")
Task packJavadoc = project.tasks.findByName("package${variantName.capitalize()}Javadoc")
if (!genJavadoc) {
genJavadoc = project.task("generate${variantName.capitalize()}Javadoc", type: Javadoc,
dependsOn: project.configurations.doclava) {
title = null
description "Generates Javadoc for $variantName."
source = javaCompile.source
classpath = files(javaCompile.classpath.files) + getAndroidPrebuilt(android.compileSdkVersion)
destinationDir = file("${project.docsDir}/$variantName/javadoc")
options.encoding = "UTF-8"
options.doclet = "com.google.doclava.Doclava"
options.bootClasspath = files(android.getBootClasspath()).asType(List)
options.docletpath = configurations.doclava.files.asType(List)
options.addStringOption("templatedir", "${rootDir}/build/tools/droiddoc/templates-sdk")
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
}
genJavadoc.dependsOn topTask
if (!packJavadoc) {
packJavadoc = project.task("package${variantName.capitalize()}Javadoc", type: Jar) {
classifier = "javadoc"
from tasks["generate${variantName.capitalize()}Javadoc"].destinationDir
destinationDir = file("${project.docsDir}/${variantName}")
}
}
packJavadoc.dependsOn genJavadoc
}
// wait for all plugins to be installed
afterEvaluate {
if (!project.android.hasProperty("isLibrary")) {
logger.warn("${project.name}: To enable source jars and javadoc, please define project.android.isLibrary")
return
}
if (project.android.isLibrary) {
// Find the release variant
def releaseVariant = android.libraryVariants.find { it.name == 'release' }
def buildConfig = fileTree(releaseVariant.getGenerateBuildConfig().sourceOutputDir)
// Add the source and classpath files for the release variant to the global javadoc task
rootProject.createJavadocs.source(releaseVariant.javaCompile.source.minus(buildConfig))
rootProject.createJavadocs.classpath = rootProject.createJavadocs.classpath +
files(releaseVariant.javaCompile.classpath) + getAndroidPrebuilt(android.compileSdkVersion)
rootProject.createJavadocs.options.bootClasspath = files(android.bootClasspath).asType(List)
android.libraryVariants.all { variant ->
addJavadocTasks(project, variant.assemble, variant.name, variant.javaCompile)
task("copy${variant.name.capitalize()}Binaries", type: Copy, dependsOn: variant.assemble) {
if (project.hasProperty("buildFromServer") &&
rootProject.getProjectsToArchive().contains(project)) {
description "Copies the release Jar to $project.distDir"
from packageReleaseJar.archivePath
into project.distDir
rename(packageReleaseJar.archiveName, "${project.name}-${project.version}-${variant.name}.jar")
}
}
}
} else {
android.applicationVariants.all { variant ->
addJavadocTasks(project, variant.assemble, variant.name, variant.javaCompile)
task("copy${variant.name.capitalize()}Binaries", type: Copy, dependsOn: variant.assemble) {
if (project.hasProperty("buildFromServer") &&
rootProject.getProjectsToArchive().contains(project)) {
description "Copies the release Apk to $project.distDir"
from variant.outputs[0].outputFile
into project.distDir
rename(variant.outputs[0].outputFile.name, "${project.name}-${project.version}-${variant.name}.apk")
}
}
}
}
// Use mainUpload anchor task to copy binaries to project.distDir
if (project.hasProperty("buildFromServer") && project.buildFromServer == "true") {
rootProject.mainUpload.dependsOn copyReleaseBinaries
}
task createSourcesJar(type: Jar) {
classifier = 'sources'
from 'src/main/java' // not sure why android.sourceSets.main.java doesnt work anymore
}
artifacts {
archives createSourcesJar
archives packageReleaseJavadoc
}
}