Generate combined Javadoc

Notes:
- Now only generating a single module Javadoc task for the
  release variant.
- Combined Javadoc now includes extensions. VP9 is excluded
  for now since it's failing for an unknown reason.

Issue: #2139

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150865589
This commit is contained in:
olly 2017-03-22 04:48:09 -07:00 committed by Oliver Woodman
parent 88e74ef381
commit 382ba7ecf0
15 changed files with 101 additions and 25 deletions

View File

@ -47,3 +47,5 @@ def getBintrayRepo() {
property('publicRepo').toBoolean()
return publicRepo ? 'exoplayer' : 'exoplayer-test'
}
apply from: 'javadoc_combined.gradle'

View File

@ -43,4 +43,4 @@ dependencies {
ext {
javadocTitle = 'Cronet extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'

View File

@ -36,4 +36,4 @@ dependencies {
ext {
javadocTitle = 'FFmpeg extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'

View File

@ -37,4 +37,4 @@ dependencies {
ext {
javadocTitle = 'FLAC extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'

View File

@ -31,7 +31,7 @@ dependencies {
ext {
javadocTitle = 'GVR extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'extension-gvr'

View File

@ -38,7 +38,7 @@ dependencies {
ext {
javadocTitle = 'OkHttp extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'extension-okhttp'

View File

@ -36,4 +36,4 @@ dependencies {
ext {
javadocTitle = 'Opus extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'

View File

@ -36,4 +36,4 @@ dependencies {
ext {
javadocTitle = 'VP9 extension'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'

68
javadoc_combined.gradle Normal file
View File

@ -0,0 +1,68 @@
// Copyright (C) 2017 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.
class CombinedJavadocPlugin implements Plugin<Project> {
static final String TASK_NAME = "generateCombinedJavadoc"
@Override
void apply(Project project) {
project.gradle.projectsEvaluated {
Set<Project> libraryModules = getLibraryModules(project)
if (!libraryModules.isEmpty()) {
String sdkDirectory = getSdkDirectory(libraryModules)
project.task(TASK_NAME, type: Javadoc) {
description = "Generates combined Javadoc."
title = "ExoPlayer library"
source = libraryModules.generateJavadoc.source
classpath = project.files(libraryModules.generateJavadoc.classpath)
destinationDir = project.file("$project.buildDir/docs/javadoc")
options {
links "http://docs.oracle.com/javase/7/docs/api/"
linksOffline "https://developer.android.com/reference",
"${sdkDirectory}/docs/reference"
encoding = "UTF-8"
}
exclude "**/BuildConfig.java"
exclude "**/R.java"
destinationDir project.file("$project.buildDir/docs/javadoc")
doLast {
libraryModules.each { libraryModule ->
project.copy {
from "${libraryModule.projectDir}/src/main/javadoc"
into "${project.buildDir}/docs/javadoc"
}
}
}
}
}
}
}
// Returns Android library modules that declare a generateJavadoc task.
private Set<Project> getLibraryModules(Project project) {
project.subprojects.findAll {
it.plugins.findPlugin("com.android.library") &&
it.tasks.findByName("generateJavadoc")
}
}
// Returns the Android SDK directory given a set of Android library modules.
private String getSdkDirectory(Set<Project> libraryModules) {
// We can retrieve the Android SDK directory from any module.
return libraryModules.iterator().next().android.sdkDirectory
}
}
apply plugin: CombinedJavadocPlugin

View File

@ -12,18 +12,24 @@
// See the License for the specific language governing permissions and
// limitations under the License.
android.libraryVariants.all { variant ->
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
title = javadocTitle
def name = variant.buildType.name
if (!name.equals("release")) {
return; // Skip non-release builds.
}
task("generateJavadoc", type: Javadoc) {
description = "Generates Javadoc for the ${javadocTitle}."
title = "ExoPlayer ${javadocTitle}"
source = variant.javaCompile.source
classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
classpath = files(variant.javaCompile.classpath.files,
project.android.getBootClasspath())
options {
links "http://docs.oracle.com/javase/7/docs/api/"
linksOffline "https://developer.android.com/reference","${android.sdkDirectory}/docs/reference"
encoding = 'UTF-8'
linksOffline "https://developer.android.com/reference",
"${android.sdkDirectory}/docs/reference"
encoding = "UTF-8"
}
exclude '**/BuildConfig.java'
exclude '**/R.java'
exclude "**/BuildConfig.java"
exclude "**/R.java"
doLast {
copy {
from "src/main/javadoc"

View File

@ -46,9 +46,9 @@ dependencies {
}
ext {
javadocTitle = 'Core'
javadocTitle = 'Core module'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'exoplayer-core'

View File

@ -38,9 +38,9 @@ dependencies {
}
ext {
javadocTitle = 'DASH'
javadocTitle = 'DASH module'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'exoplayer-dash'

View File

@ -32,9 +32,9 @@ dependencies {
}
ext {
javadocTitle = 'HLS'
javadocTitle = 'HLS module'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'exoplayer-hls'

View File

@ -38,9 +38,9 @@ dependencies {
}
ext {
javadocTitle = 'SmoothStreaming'
javadocTitle = 'SmoothStreaming module'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'exoplayer-smoothstreaming'

View File

@ -29,9 +29,9 @@ dependencies {
}
ext {
javadocTitle = 'UI'
javadocTitle = 'UI module'
}
apply from: '../../library_javadoc.gradle'
apply from: '../../javadoc_library.gradle'
ext {
releaseArtifact = 'exoplayer-ui'