You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/10/12 13:15:23 UTC
[groovy] 01/03: Fix distribution missing javadocs for optional
modules
This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 1ade49c62b2251d19d200211fe61b62e9da5f760
Author: Cedric Champeau <cc...@apache.org>
AuthorDate: Mon Oct 12 11:10:44 2020 +0200
Fix distribution missing javadocs for optional modules
---
.../src/main/groovy/org.apache.groovy-all.gradle | 88 ++++------------------
.../groovy/org.apache.groovy-distribution.gradle | 25 ++----
...dle => org.apache.groovy-doc-aggregator.gradle} | 79 +------------------
.../groovy/org.apache.groovy-documented.gradle | 4 +-
...nsion.groovy => DocAggregationExtension.groovy} | 2 +-
subprojects/groovy-all/build.gradle | 2 +-
subprojects/groovy-binary/build.gradle | 10 ++-
7 files changed, 36 insertions(+), 174 deletions(-)
diff --git a/buildSrc/src/main/groovy/org.apache.groovy-all.gradle b/buildSrc/src/main/groovy/org.apache.groovy-all.gradle
index 88e19b6..cde704e 100644
--- a/buildSrc/src/main/groovy/org.apache.groovy-all.gradle
+++ b/buildSrc/src/main/groovy/org.apache.groovy-all.gradle
@@ -26,93 +26,40 @@
It also aggregates docs and sources but does NOT provide an "uber" jar.
*/
import org.apache.groovy.gradle.GroovyLibraryExtension
-import org.apache.groovy.gradle.GroovyAllExtension
plugins {
id 'org.apache.groovy-common'
id 'org.apache.groovy-platform'
id 'org.apache.groovy-documented'
+ id 'org.apache.groovy-doc-aggregator'
}
-extensions.create("groovyAll", GroovyAllExtension)
-
javaPlatform {
allowDependencies()
}
-def projectsIncludedInGroovyAll = rootProject.allprojects.findAll {
- if (it.pluginManager.hasPlugin('org.apache.groovy-base')) {
- return it.extensions.getByType(GroovyLibraryExtension).includeInGroovyAll.get()
- }
- return false
-}
-
configurations {
allSources {
- canBeConsumed = false
- canBeResolved = true
- transitive = false
extendsFrom runtime
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
- attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, DocsType.SOURCES))
- attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, "aggregation"))
- }
}
allSourcesRuntimeClasspath {
- canBeConsumed = false
- canBeResolved = true
extendsFrom runtime
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
- attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
- attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, "javadocClasspath"))
- }
}
}
-dependencies {
- projectsIncludedInGroovyAll.each {
- api(it)
- }
- attributesSchema {
- attribute(Usage.USAGE_ATTRIBUTE) {
- compatibilityRules.add(JavadocClasspathCompatibilityRule)
- }
+def projectsIncludedInGroovyAll = rootProject.allprojects.findAll {
+ if (it.pluginManager.hasPlugin('org.apache.groovy-base')) {
+ return it.extensions.getByType(GroovyLibraryExtension).includeInGroovyAll.get()
}
+ return false
}
-def sourcesAllJar = tasks.register("sourcesAllJar", Jar) {
- from configurations.allSources
- archiveClassifier = 'sources'
-}
-
-def javadocAll = tasks.register("javadocAll", Javadoc) {
- destinationDir = file("$buildDir/alljavadoc")
- source configurations.allSources
- classpath = configurations.allSourcesRuntimeClasspath
- groovyAll.excludedFromJavadocs.each {
- exclude it
+dependencies {
+ projectsIncludedInGroovyAll.each {
+ api(it)
}
}
-def javadocAllJar = tasks.register("javadocAllJar", Jar) {
- from javadocAll
- archiveClassifier = 'javadoc'
-}
-
-def groovydocAll = tasks.register("groovydocAll", Groovydoc) {
- destinationDir = file("${buildDir}/allgroovydoc")
- source = configurations.allSources
- classpath = configurations.allSourcesRuntimeClasspath
-}
-
-def groovydocAllJar = tasks.register("groovydocAllJar", Jar) {
- from groovydocAll
- archiveClassifier = 'groovydoc'
-}
-
def createDocumentationPublication = { String name, TaskProvider artifact ->
def outgoing = configurations.create("${name}Elements") {
it.canBeConsumed = true
@@ -134,9 +81,9 @@ def createDocumentationPublication = { String name, TaskProvider artifact ->
}
}
-createDocumentationPublication('sources', sourcesAllJar)
-createDocumentationPublication('javadoc', javadocAllJar)
-createDocumentationPublication('groovydoc', groovydocAllJar)
+createDocumentationPublication('sources', tasks.named('sourcesAllJar'))
+createDocumentationPublication('javadoc', tasks.named('javadocAllJar'))
+createDocumentationPublication('groovydoc', tasks.named('groovydocAllJar'))
configurations {
allJavadoc {
@@ -148,7 +95,7 @@ configurations {
}
outgoing {
artifacts {
- artifact javadocAll
+ artifact tasks.named('javadocAll')
}
}
}
@@ -161,17 +108,8 @@ configurations {
}
outgoing {
artifacts {
- artifact groovydocAll
+ artifact tasks.named('groovydocAll')
}
}
}
}
-
-class JavadocClasspathCompatibilityRule implements AttributeCompatibilityRule<Usage> {
- @Override
- void execute(CompatibilityCheckDetails<Usage> details) {
- if (details.consumerValue.name == 'javadocClasspath' && details.producerValue.name == Usage.JAVA_RUNTIME) {
- details.compatible()
- }
- }
-}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/org.apache.groovy-distribution.gradle b/buildSrc/src/main/groovy/org.apache.groovy-distribution.gradle
index e1de8a7..fe399fb 100644
--- a/buildSrc/src/main/groovy/org.apache.groovy-distribution.gradle
+++ b/buildSrc/src/main/groovy/org.apache.groovy-distribution.gradle
@@ -25,6 +25,7 @@ plugins {
id 'jvm-ecosystem'
id 'org.apache.groovy-common'
id 'org.apache.groovy-aggregating-project'
+ id 'org.apache.groovy-doc-aggregator'
id 'org.asciidoctor.jvm.pdf'
}
@@ -53,24 +54,6 @@ configurations {
}
}
doc
- allJavadoc {
- extendsFrom doc
- canBeConsumed = false
- canBeResolved = true
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, DocsType.JAVADOC))
- }
- }
- allGroovydoc {
- extendsFrom doc
- canBeConsumed = false
- canBeResolved = true
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, "groovydoc"))
- }
- }
allAsciidoc {
extendsFrom baseProjects
canBeConsumed = false
@@ -90,6 +73,12 @@ configurations {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
}
}
+ allSources {
+ extendsFrom baseProjects
+ }
+ allSourcesRuntimeClasspath {
+ extendsFrom baseProjects
+ }
}
dependencies {
diff --git a/buildSrc/src/main/groovy/org.apache.groovy-all.gradle b/buildSrc/src/main/groovy/org.apache.groovy-doc-aggregator.gradle
similarity index 58%
copy from buildSrc/src/main/groovy/org.apache.groovy-all.gradle
copy to buildSrc/src/main/groovy/org.apache.groovy-doc-aggregator.gradle
index 88e19b6..f23ce4d 100644
--- a/buildSrc/src/main/groovy/org.apache.groovy-all.gradle
+++ b/buildSrc/src/main/groovy/org.apache.groovy-doc-aggregator.gradle
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+import org.apache.groovy.gradle.DocAggregationExtension
/*
This plugin declares a component type corresponding to the "groovy-all" component.
@@ -25,34 +26,18 @@
It also aggregates docs and sources but does NOT provide an "uber" jar.
*/
-import org.apache.groovy.gradle.GroovyLibraryExtension
-import org.apache.groovy.gradle.GroovyAllExtension
-
plugins {
id 'org.apache.groovy-common'
- id 'org.apache.groovy-platform'
id 'org.apache.groovy-documented'
}
-extensions.create("groovyAll", GroovyAllExtension)
-
-javaPlatform {
- allowDependencies()
-}
-
-def projectsIncludedInGroovyAll = rootProject.allprojects.findAll {
- if (it.pluginManager.hasPlugin('org.apache.groovy-base')) {
- return it.extensions.getByType(GroovyLibraryExtension).includeInGroovyAll.get()
- }
- return false
-}
+def docAggregation = extensions.create('docAggregation', DocAggregationExtension)
configurations {
allSources {
canBeConsumed = false
canBeResolved = true
transitive = false
- extendsFrom runtime
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
@@ -63,7 +48,6 @@ configurations {
allSourcesRuntimeClasspath {
canBeConsumed = false
canBeResolved = true
- extendsFrom runtime
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
@@ -73,9 +57,6 @@ configurations {
}
dependencies {
- projectsIncludedInGroovyAll.each {
- api(it)
- }
attributesSchema {
attribute(Usage.USAGE_ATTRIBUTE) {
compatibilityRules.add(JavadocClasspathCompatibilityRule)
@@ -92,7 +73,7 @@ def javadocAll = tasks.register("javadocAll", Javadoc) {
destinationDir = file("$buildDir/alljavadoc")
source configurations.allSources
classpath = configurations.allSourcesRuntimeClasspath
- groovyAll.excludedFromJavadocs.each {
+ docAggregation.excludedFromJavadocs.each {
exclude it
}
}
@@ -113,60 +94,6 @@ def groovydocAllJar = tasks.register("groovydocAllJar", Jar) {
archiveClassifier = 'groovydoc'
}
-def createDocumentationPublication = { String name, TaskProvider artifact ->
- def outgoing = configurations.create("${name}Elements") {
- it.canBeConsumed = true
- it.canBeResolved = false
- it.attributes {
- it.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- it.attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
- it.attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, name))
- it.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
- }
- it.outgoing {
- it.artifact artifact
- }
- }
- components.javaPlatform {
- addVariantsFromConfiguration(outgoing) {
- mapToOptional()
- }
- }
-}
-
-createDocumentationPublication('sources', sourcesAllJar)
-createDocumentationPublication('javadoc', javadocAllJar)
-createDocumentationPublication('groovydoc', groovydocAllJar)
-
-configurations {
- allJavadoc {
- canBeConsumed = true
- canBeResolved = false
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, DocsType.JAVADOC))
- }
- outgoing {
- artifacts {
- artifact javadocAll
- }
- }
- }
- allGroovydoc {
- canBeConsumed = true
- canBeResolved = false
- attributes {
- attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.DOCUMENTATION))
- attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType, "groovydoc"))
- }
- outgoing {
- artifacts {
- artifact groovydocAll
- }
- }
- }
-}
-
class JavadocClasspathCompatibilityRule implements AttributeCompatibilityRule<Usage> {
@Override
void execute(CompatibilityCheckDetails<Usage> details) {
diff --git a/buildSrc/src/main/groovy/org.apache.groovy-documented.gradle b/buildSrc/src/main/groovy/org.apache.groovy-documented.gradle
index e772358..c84ca3f 100644
--- a/buildSrc/src/main/groovy/org.apache.groovy-documented.gradle
+++ b/buildSrc/src/main/groovy/org.apache.groovy-documented.gradle
@@ -66,7 +66,9 @@ tasks.withType(Javadoc).configureEach {
}
tasks.withType(Groovydoc).configureEach {
- source = sourceSets.main.allSource
+ if (sourceSets.findByName('main')) {
+ source = sourceSets.main.allSource
+ }
groovyClasspath = configurations.groovydocClasspath
use = true
windowTitle = "Groovy ${versions.groovy}"
diff --git a/buildSrc/src/main/groovy/org/apache/groovy/gradle/GroovyAllExtension.groovy b/buildSrc/src/main/groovy/org/apache/groovy/gradle/DocAggregationExtension.groovy
similarity index 97%
rename from buildSrc/src/main/groovy/org/apache/groovy/gradle/GroovyAllExtension.groovy
rename to buildSrc/src/main/groovy/org/apache/groovy/gradle/DocAggregationExtension.groovy
index 8229248..7b50ee3 100644
--- a/buildSrc/src/main/groovy/org/apache/groovy/gradle/GroovyAllExtension.groovy
+++ b/buildSrc/src/main/groovy/org/apache/groovy/gradle/DocAggregationExtension.groovy
@@ -21,7 +21,7 @@ package org.apache.groovy.gradle
import groovy.transform.CompileStatic
@CompileStatic
-class GroovyAllExtension {
+class DocAggregationExtension {
final List<String> excludedFromJavadocs = []
void excludeFromJavadoc(String... items) {
diff --git a/subprojects/groovy-all/build.gradle b/subprojects/groovy-all/build.gradle
index 16802c0..e322f30 100644
--- a/subprojects/groovy-all/build.gradle
+++ b/subprojects/groovy-all/build.gradle
@@ -21,7 +21,7 @@ plugins {
id 'org.apache.groovy-all'
}
-groovyAll {
+docAggregation {
excludeFromJavadoc '**/*.html',
'**/*.groovy',
'**/GroovyRecognizer.java' // generated file
diff --git a/subprojects/groovy-binary/build.gradle b/subprojects/groovy-binary/build.gradle
index 5005f80..b757209 100644
--- a/subprojects/groovy-binary/build.gradle
+++ b/subprojects/groovy-binary/build.gradle
@@ -24,6 +24,12 @@ plugins {
id 'org.apache.groovy-asciidoctor'
}
+docAggregation {
+ excludeFromJavadoc '**/*.html',
+ '**/*.groovy',
+ '**/GroovyRecognizer.java' // generated file
+}
+
distribution {
docs ':', 'org.codehaus.groovy.runtime.DefaultGroovyMethods',
'org.codehaus.groovy.runtime.DefaultGroovyStaticMethods',
@@ -109,10 +115,10 @@ distribution {
docSpec = copySpec {
into('html/api') {
- from configurations.allJavadoc
+ from tasks.named('javadocAll')
}
into('html/gapi') {
- from configurations.allGroovydoc
+ from tasks.named('groovydocAll')
}
into('html/documentation') {
from configurations.allAsciidoc