From 90bdf09f1541a90ce63e5ec38e6a3662fe98c746 Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 29 Mar 2018 05:20:58 -0700 Subject: [PATCH] Fix Javadoc generation + Javadoc ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=190916130 --- javadoc_combined.gradle | 32 +++++++++++++++++--------------- javadoc_library.gradle | 9 ++++----- javadoc_util.gradle | 31 +++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 javadoc_util.gradle diff --git a/javadoc_combined.gradle b/javadoc_combined.gradle index 7e27f41c5e..901dc91544 100644 --- a/javadoc_combined.gradle +++ b/javadoc_combined.gradle @@ -11,6 +11,8 @@ // 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. +apply from: "${rootDir}/javadoc_util.gradle" + class CombinedJavadocPlugin implements Plugin { static final String TASK_NAME = "generateCombinedJavadoc" @@ -20,29 +22,35 @@ class CombinedJavadocPlugin implements Plugin { project.gradle.projectsEvaluated { Set 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) + classpath = project.files([]) 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" + links "https://docs.oracle.com/javase/7/docs/api/", + "https://developer.android.com/reference" encoding = "UTF-8" } exclude "**/BuildConfig.java" exclude "**/R.java" - doLast { + doFirst { libraryModules.each { libraryModule -> - project.copy { - from "${libraryModule.projectDir}/src/main/javadoc" - into "${project.buildDir}/docs/javadoc" + libraryModule.android.libraryVariants.all { variant -> + def name = variant.buildType.name + if (name.equals("release")) { + classpath += + libraryModule.project.files( + variant.javaCompile.classpath.files, + libraryModule.project.android.getBootClasspath()) + } } } } + doLast { + project.javadocFixLinks() + } } } } @@ -56,12 +64,6 @@ class CombinedJavadocPlugin implements Plugin { } } - // Returns the Android SDK directory given a set of Android library modules. - private String getSdkDirectory(Set libraryModules) { - // We can retrieve the Android SDK directory from any module. - return libraryModules.iterator().next().android.sdkDirectory - } - } apply plugin: CombinedJavadocPlugin diff --git a/javadoc_library.gradle b/javadoc_library.gradle index f90131cc98..59c1e16515 100644 --- a/javadoc_library.gradle +++ b/javadoc_library.gradle @@ -11,6 +11,8 @@ // 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. +apply from: "${rootDir}/javadoc_util.gradle" + android.libraryVariants.all { variant -> def name = variant.buildType.name if (!name.equals("release")) { @@ -23,7 +25,7 @@ android.libraryVariants.all { variant -> options { links "http://docs.oracle.com/javase/7/docs/api/" linksOffline "https://developer.android.com/reference", - "${android.sdkDirectory}/docs/reference" + "${android.sdkDirectory}/docs/reference" encoding = "UTF-8" } exclude "**/BuildConfig.java" @@ -35,10 +37,7 @@ android.libraryVariants.all { variant -> project.android.getBootClasspath()) } doLast { - copy { - from "src/main/javadoc" - into "$buildDir/docs/javadoc" - } + project.javadocFixLinks() } } } diff --git a/javadoc_util.gradle b/javadoc_util.gradle new file mode 100644 index 0000000000..5e32e2dfc5 --- /dev/null +++ b/javadoc_util.gradle @@ -0,0 +1,31 @@ +// Copyright (C) 2018 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. +ext.javadocFixLinks = { + // Fix external Android links to target the top frame. + def androidRoot = "https://developer.android.com/reference/" + def androidLink = "