Commit 382ba7ec by olly Committed by Oliver Woodman

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
parent 88e74ef3
...@@ -47,3 +47,5 @@ def getBintrayRepo() { ...@@ -47,3 +47,5 @@ def getBintrayRepo() {
property('publicRepo').toBoolean() property('publicRepo').toBoolean()
return publicRepo ? 'exoplayer' : 'exoplayer-test' return publicRepo ? 'exoplayer' : 'exoplayer-test'
} }
apply from: 'javadoc_combined.gradle'
...@@ -43,4 +43,4 @@ dependencies { ...@@ -43,4 +43,4 @@ dependencies {
ext { ext {
javadocTitle = 'Cronet extension' javadocTitle = 'Cronet extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
...@@ -36,4 +36,4 @@ dependencies { ...@@ -36,4 +36,4 @@ dependencies {
ext { ext {
javadocTitle = 'FFmpeg extension' javadocTitle = 'FFmpeg extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
...@@ -37,4 +37,4 @@ dependencies { ...@@ -37,4 +37,4 @@ dependencies {
ext { ext {
javadocTitle = 'FLAC extension' javadocTitle = 'FLAC extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
...@@ -31,7 +31,7 @@ dependencies { ...@@ -31,7 +31,7 @@ dependencies {
ext { ext {
javadocTitle = 'GVR extension' javadocTitle = 'GVR extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'extension-gvr' releaseArtifact = 'extension-gvr'
......
...@@ -38,7 +38,7 @@ dependencies { ...@@ -38,7 +38,7 @@ dependencies {
ext { ext {
javadocTitle = 'OkHttp extension' javadocTitle = 'OkHttp extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'extension-okhttp' releaseArtifact = 'extension-okhttp'
......
...@@ -36,4 +36,4 @@ dependencies { ...@@ -36,4 +36,4 @@ dependencies {
ext { ext {
javadocTitle = 'Opus extension' javadocTitle = 'Opus extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
...@@ -36,4 +36,4 @@ dependencies { ...@@ -36,4 +36,4 @@ dependencies {
ext { ext {
javadocTitle = 'VP9 extension' javadocTitle = 'VP9 extension'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
// 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
...@@ -12,18 +12,24 @@ ...@@ -12,18 +12,24 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
android.libraryVariants.all { variant -> android.libraryVariants.all { variant ->
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { def name = variant.buildType.name
description "Generates Javadoc for $variant.name." if (!name.equals("release")) {
title = javadocTitle return; // Skip non-release builds.
}
task("generateJavadoc", type: Javadoc) {
description = "Generates Javadoc for the ${javadocTitle}."
title = "ExoPlayer ${javadocTitle}"
source = variant.javaCompile.source source = variant.javaCompile.source
classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath()) classpath = files(variant.javaCompile.classpath.files,
project.android.getBootClasspath())
options { options {
links "http://docs.oracle.com/javase/7/docs/api/" links "http://docs.oracle.com/javase/7/docs/api/"
linksOffline "https://developer.android.com/reference","${android.sdkDirectory}/docs/reference" linksOffline "https://developer.android.com/reference",
encoding = 'UTF-8' "${android.sdkDirectory}/docs/reference"
encoding = "UTF-8"
} }
exclude '**/BuildConfig.java' exclude "**/BuildConfig.java"
exclude '**/R.java' exclude "**/R.java"
doLast { doLast {
copy { copy {
from "src/main/javadoc" from "src/main/javadoc"
......
...@@ -46,9 +46,9 @@ dependencies { ...@@ -46,9 +46,9 @@ dependencies {
} }
ext { ext {
javadocTitle = 'Core' javadocTitle = 'Core module'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'exoplayer-core' releaseArtifact = 'exoplayer-core'
......
...@@ -38,9 +38,9 @@ dependencies { ...@@ -38,9 +38,9 @@ dependencies {
} }
ext { ext {
javadocTitle = 'DASH' javadocTitle = 'DASH module'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'exoplayer-dash' releaseArtifact = 'exoplayer-dash'
......
...@@ -32,9 +32,9 @@ dependencies { ...@@ -32,9 +32,9 @@ dependencies {
} }
ext { ext {
javadocTitle = 'HLS' javadocTitle = 'HLS module'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'exoplayer-hls' releaseArtifact = 'exoplayer-hls'
......
...@@ -38,9 +38,9 @@ dependencies { ...@@ -38,9 +38,9 @@ dependencies {
} }
ext { ext {
javadocTitle = 'SmoothStreaming' javadocTitle = 'SmoothStreaming module'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'exoplayer-smoothstreaming' releaseArtifact = 'exoplayer-smoothstreaming'
......
...@@ -29,9 +29,9 @@ dependencies { ...@@ -29,9 +29,9 @@ dependencies {
} }
ext { ext {
javadocTitle = 'UI' javadocTitle = 'UI module'
} }
apply from: '../../library_javadoc.gradle' apply from: '../../javadoc_library.gradle'
ext { ext {
releaseArtifact = 'exoplayer-ui' releaseArtifact = 'exoplayer-ui'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment