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