You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2025/05/23 16:41:00 UTC
(grails-core) 01/01: WIP groovydoc-tool-rewrite
This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch groovydoc-tool-rewrite
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 17b264ebebbf05fe056e4eaff4af377fca313b4b
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Fri May 23 12:13:36 2025 -0400
WIP groovydoc-tool-rewrite
---
.gitignore | 1 +
CONTRIBUTING.md | 4 +-
buildSrc/build.gradle | 2 +
.../grails/internal/build/GrailsGroovydoc.groovy | 184 +++++++++++++++++++++
.../build/GrailsGroovydocParameters.groovy | 52 ++++++
.../internal/build/GrailsGroovydocPlugin.groovy | 132 +++++++++++++++
.../internal/build/GrailsGroovydocWorker.groovy | 81 +++++++++
.../gradle-plugins/grails.groovydoc.properties | 20 +++
gradle/docs-config.gradle | 2 -
gradle/docs-dependencies.gradle | 85 ----------
grails-async/core/build.gradle | 1 +
grails-async/gpars/build.gradle | 1 +
grails-async/plugin/build.gradle | 1 +
grails-async/rxjava/build.gradle | 1 +
grails-async/rxjava2/build.gradle | 1 +
grails-async/rxjava3/build.gradle | 1 +
grails-bootstrap/build.gradle | 1 +
grails-cache/build.gradle | 1 +
grails-codecs-core/build.gradle | 1 +
grails-codecs/build.gradle | 1 +
grails-common/build.gradle | 1 +
grails-console/build.gradle | 1 +
grails-controllers/build.gradle | 1 +
grails-converters/build.gradle | 1 +
grails-core/build.gradle | 1 +
grails-data-docs/stage/build.gradle | 14 +-
grails-data-hibernate5/boot-plugin/build.gradle | 1 +
grails-data-hibernate5/core/build.gradle | 1 +
grails-data-hibernate5/docs/build.gradle | 5 +-
grails-data-mongodb/boot-plugin/build.gradle | 1 +
grails-data-mongodb/bson/build.gradle | 1 +
grails-data-mongodb/core/build.gradle | 1 +
grails-data-mongodb/docs/build.gradle | 5 +-
grails-data-mongodb/ext/build.gradle | 1 +
grails-data-mongodb/grails-plugin/build.gradle | 1 +
grails-data-mongodb/gson-templates/build.gradle | 1 +
grails-data-simple/build.gradle | 1 +
grails-databinding-core/build.gradle | 1 +
grails-databinding/build.gradle | 1 +
grails-datamapping-async/build.gradle | 1 +
grails-datamapping-core-test/build.gradle | 1 +
grails-datamapping-core/build.gradle | 1 +
grails-datamapping-rx/build.gradle | 1 +
grails-datamapping-support/build.gradle | 1 +
grails-datamapping-tck/build.gradle | 1 +
grails-datamapping-validation/build.gradle | 1 +
grails-datasource/build.gradle | 1 +
grails-datastore-async/build.gradle | 1 +
grails-datastore-core/build.gradle | 1 +
grails-datastore-web/build.gradle | 1 +
grails-doc/build.gradle | 13 +-
grails-domain-class/build.gradle | 1 +
grails-encoder/build.gradle | 1 +
grails-events/compat/build.gradle | 1 +
grails-events/core/build.gradle | 1 +
grails-events/gpars/build.gradle | 1 +
grails-events/plugin/build.gradle | 1 +
grails-events/rxjava/build.gradle | 1 +
grails-events/rxjava2/build.gradle | 1 +
grails-events/rxjava3/build.gradle | 1 +
grails-events/spring/build.gradle | 1 +
grails-events/transforms/build.gradle | 1 +
grails-fields/build.gradle | 1 +
.../plugin/core/GrailsPluginGradlePlugin.groovy | 2 +-
.../gradle/plugin/doc/GrailsDocGradlePlugin.groovy | 30 ++--
.../publishing/GrailsPublishGradlePlugin.groovy | 6 +-
grails-gsp/core/build.gradle | 1 +
grails-gsp/grails-sitemesh3/build.gradle | 1 +
grails-gsp/grails-taglib/build.gradle | 1 +
grails-gsp/grails-web-gsp-taglib/build.gradle | 1 +
grails-gsp/grails-web-gsp/build.gradle | 1 +
grails-gsp/grails-web-jsp/build.gradle | 1 +
grails-gsp/grails-web-taglib/build.gradle | 1 +
grails-gsp/plugin/build.gradle | 1 +
grails-i18n/build.gradle | 1 +
grails-interceptors/build.gradle | 1 +
grails-logging/build.gradle | 1 +
grails-mimetypes/build.gradle | 1 +
grails-profiles/base/build.gradle | 1 +
grails-profiles/plugin/build.gradle | 1 +
grails-profiles/profile/build.gradle | 1 +
grails-profiles/rest-api-plugin/build.gradle | 1 +
grails-profiles/rest-api/build.gradle | 1 +
grails-profiles/web-plugin/build.gradle | 1 +
grails-profiles/web/build.gradle | 1 +
grails-rest-transforms/build.gradle | 1 +
grails-services/build.gradle | 1 +
grails-shell-cli/build.gradle | 1 +
grails-spring/build.gradle | 1 +
grails-test-core/build.gradle | 1 +
grails-test-examples/cache/build.gradle | 1 +
.../hibernate5/spring-boot-hibernate/build.gradle | 1 +
.../hibernate5/standalone-hibernate/build.gradle | 1 +
.../views-functional-tests-plugin/build.gradle | 1 +
.../views-functional-tests/build.gradle | 1 +
grails-test-suite-persistence/build.gradle | 60 +++++--
grails-test-suite-uber/build.gradle | 1 +
grails-testing-support-core/build.gradle | 1 +
grails-testing-support-datamapping/build.gradle | 1 +
grails-testing-support-mongodb/build.gradle | 1 +
grails-testing-support-views-gson/build.gradle | 1 +
grails-testing-support-web/build.gradle | 1 +
grails-url-mappings/build.gradle | 1 +
grails-validation/build.gradle | 1 +
grails-views-core/build.gradle | 1 +
grails-views-gson/build.gradle | 1 +
grails-views-markup/build.gradle | 1 +
grails-web-boot/build.gradle | 1 +
grails-web-common/build.gradle | 1 +
grails-web-core/build.gradle | 1 +
grails-web-databinding/build.gradle | 1 +
grails-web-mvc/build.gradle | 1 +
grails-web-url-mappings/build.gradle | 1 +
113 files changed, 657 insertions(+), 136 deletions(-)
diff --git a/.gitignore b/.gitignore
index 4a647cf953..1f86a9c757 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,4 +53,5 @@ target
tmp/
!grails-fields/src/main/groovy/org/grails/scaffolding/registry/output
!etc/bin
+!buildSrc/src/main/groovy/org/apache/grails/internal/build
etc/bin/results
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1595ba9a3a..5c1c0583a4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -229,9 +229,9 @@ Essentially, using the `toc.yml` file and the directory structure you can manipu
To generate the documentation run the `publishGuide` in the `grails-doc` task:
- ./gradlew :grails-doc:publishGuide -x aggregateGroovydoc
+ ./gradlew :grails-doc:publishGuide -x grailsGroovydoc
-NOTE: In the above example we skip the `aggregateGroovydoc` task to speed up building of the guide, otherwise all
+NOTE: In the above example we skip the `grailsGroovydoc` task to speed up building of the guide, otherwise all
Groovydoc documentation will be built too!
Once the guide is built simply open the `grails-doc/build/original-guide/index.html` file in a browser to review your
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index ad956ef33e..6e57259e19 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -50,4 +50,6 @@ dependencies {
implementation 'org.asciidoctor:asciidoctor-gradle-jvm'
implementation 'org.springframework.boot:spring-boot-gradle-plugin'
implementation 'org.nosphere.apache.rat:org.nosphere.apache.rat.gradle.plugin:0.8.1'
+
+ compileOnly 'org.apache.groovy:groovy-groovydoc:4.0.27-SNAPSHOT'
}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydoc.groovy b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydoc.groovy
new file mode 100644
index 0000000000..0c897c0e80
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydoc.groovy
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * https://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.
+ */
+
+package org.apache.grails.internal.build
+
+import org.gradle.api.DefaultTask
+import org.gradle.api.InvalidUserDataException
+import org.gradle.api.UncheckedIOException
+import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.file.FileSystemOperations
+import org.gradle.api.internal.tasks.GroovydocAntAction
+import org.gradle.api.model.ObjectFactory
+import org.gradle.api.provider.Property
+import org.gradle.api.resources.TextResource
+import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.JavaExec
+import org.gradle.api.tasks.Nested
+import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.PathSensitive
+import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.TaskAction
+import org.gradle.api.tasks.javadoc.GroovydocAccess
+import org.gradle.internal.enterprise.test.FileProperty
+import org.gradle.process.JavaForkOptions
+import org.gradle.workers.WorkerExecutor
+
+import javax.inject.Inject
+
+/**
+ * Uses process isolation to reduce memory footprint in Groovydoc
+ */
+@CacheableTask
+abstract class GrailsGroovydoc extends DefaultTask {
+ @Input
+ final Property<String> author
+
+ @Input
+ final Property<String> charset
+
+ @Input
+ final Property<Boolean> debugOutput
+
+ @Input
+ final Property<String> docTitle
+
+ @Input
+ final Property<String> fileEncoding
+
+ @Input
+ final Property<String> footer
+
+ @Input
+ final Property<String> header
+
+ @Input
+ final Property<Boolean> noMainForScripts
+
+ @Input
+ final Property<Boolean> noScripts
+
+ @Input
+ final Property<Boolean> noTimestamp
+
+ @Input
+ final Property<Boolean> noVersionTimestamp
+
+ @Input
+ final Property<GroovydocAccess> access
+
+ @Nested
+ JavaForkOptions forkOptions
+
+ @InputFile
+ @PathSensitive(PathSensitivity.RELATIVE)
+ final FileProperty overview
+
+ @InputFiles
+ @PathSensitive(PathSensitivity.RELATIVE)
+ final ConfigurableFileCollection groovyClasspath // where to locate the groovydoc library
+
+ @InputFiles
+ @PathSensitive(PathSensitivity.RELATIVE)
+ final ConfigurableFileCollection source // files to generate groovydoc for
+
+ @OutputDirectory
+ final DirectoryProperty destinationDirectory
+
+ private final ObjectFactory objects
+ private final WorkerExecutor workerExecutor
+
+ @Inject
+ GrailsGroovydoc(ObjectFactory objects, WorkerExecutor workerExecutor) {
+ this.objects = objects
+ this.workerExecutor = workerExecutor
+
+ author = objects.property(String)
+ charset = objects.property(String)
+ debugOutput = objects.property(Boolean)
+ docTitle = objects.property(String)
+ fileEncoding = objects.property(String)
+ footer = objects.property(String)
+ header = objects.property(String)
+ noMainForScripts = objects.property(Boolean)
+ noScripts = objects.property(Boolean)
+ noTimestamp = objects.property(Boolean)
+ noVersionTimestamp = objects.property(Boolean)
+ access = objects.property(GroovydocAccess)
+ groovyClasspath = objects.fileCollection()
+ source = objects.fileCollection()
+ destinationDirectory = objects.directoryProperty()
+ forkOptions = objects.newInstance(JavaForkOptions)
+ }
+
+ @TaskAction
+ protected void generate() {
+ if (this.getGroovyClasspath().getFiles().isEmpty()) {
+ throw new InvalidUserDataException("You must assign a Groovy library to the groovy configuration!")
+ }
+
+ workerExecutor.processIsolation {
+ it.forkOptions.jvmArgs = forkOptions.jvmArgs
+ it.forkOptions.debug = forkOptions.debug
+ it.forkOptions.executable = forkOptions.executable
+ }.submit(GrailsGroovydocWorker) {
+ params()
+ }
+
+
+ File destinationDir = this.getDestinationDir()
+
+ try {
+ this.getDeleter().ensureEmptyDirectory(destinationDir)
+ } catch (IOException ex) {
+ throw new UncheckedIOException(ex)
+ }
+
+ FileSystemOperations fsOperations = (FileSystemOperations) this.getServices().get(FileSystemOperations.class)
+ File tmpDir = this.getTemporaryDir()
+ fsOperations.delete((spec) -> spec.delete(new Object[]{tmpDir}))
+ fsOperations.copy((spec) -> spec.from(new Object[]{this.getSource()}).into(tmpDir))
+
+ List cp = getClasspath().collect { it } + getGroovyClasspath().collect { it }
+ this.getWorkerExecutor().classLoaderIsolation().submit(GroovydocAntAction.class, (parameters) -> {
+ parameters.getAntLibraryClasspath().from(new Object[]{cp})
+ parameters.getSource().convention(this.getSource())
+ parameters.getDestinationDirectory().fileValue(destinationDir)
+ parameters.getUse().convention(this.isUse())
+ parameters.getNoTimestamp().convention(this.isNoTimestamp())
+ parameters.getNoVersionStamp().convention(this.isNoVersionStamp())
+ parameters.getWindowTitle().convention(this.getWindowTitle())
+ parameters.getDocTitle().convention(this.getDocTitle())
+ parameters.getHeader().convention(this.getHeader())
+ parameters.getFooter().convention(this.getFooter())
+ TextResource overview = this.getOverviewText()
+ parameters.getOverview().convention(overview != null ? overview.asFile().getAbsolutePath() : null)
+ parameters.getAccess().convention(this.getAccess())
+ parameters.getLinks().convention(this.getLinks())
+ parameters.getTmpDir().fileValue(this.getTemporaryDir())
+ parameters.getIncludeAuthor().convention(this.getIncludeAuthor())
+ parameters.getProcessScripts().convention(this.getProcessScripts())
+ parameters.getIncludeMainForScripts().convention(this.getIncludeMainForScripts())
+ })
+ }
+}
diff --git a/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocParameters.groovy b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocParameters.groovy
new file mode 100644
index 0000000000..b1a3e82b13
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocParameters.groovy
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * https://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.
+ */
+
+package org.apache.grails.internal.build
+
+import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.provider.SetProperty
+import org.gradle.api.tasks.javadoc.Groovydoc
+import org.gradle.api.tasks.javadoc.GroovydocAccess
+import org.gradle.internal.enterprise.test.FileProperty
+import org.gradle.workers.WorkParameters
+
+interface GrailsGroovydocParameters extends WorkParameters {
+ Property<String> getIncludeAuthor()
+ Property<String> getCharset()
+ Property<String> getDocTitle()
+ Property<String> getWindowTitle()
+ Property<String> getFileEncoding()
+ Property<String> getFooter()
+ Property<String> getHeader()
+ Property<Boolean> getNoMainForScripts()
+ Property<Boolean> getIncludeScripts()
+ Property<Boolean> getNoTimestamp()
+ Property<Boolean> getNoVersionTimestamp()
+ Property<String> getJavaVersion()
+ Property<GroovydocAccess> getAccess()
+ FileProperty getOverview()
+ ConfigurableFileCollection getSource()
+ DirectoryProperty getDestinationDirectory()
+ Property<Boolean> getIncludeUsagePages() // use flag
+ SetProperty<Groovydoc.Link> getLinks();
+ RegularFileProperty getTmpDir();
+}
diff --git a/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocPlugin.groovy b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocPlugin.groovy
new file mode 100644
index 0000000000..c1f18f2e7b
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocPlugin.groovy
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * https://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.
+ */
+
+package org.apache.grails.internal.build
+
+import groovy.transform.CompileDynamic
+import groovy.transform.CompileStatic
+import org.gradle.api.NamedDomainObjectProvider
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.artifacts.Configuration
+import org.gradle.api.attributes.Bundling
+import org.gradle.api.attributes.Category
+import org.gradle.api.attributes.Usage
+import org.gradle.api.file.SourceDirectorySet
+import org.gradle.api.model.ObjectFactory
+import org.gradle.api.plugins.internal.JavaPluginHelper
+import org.gradle.api.plugins.jvm.internal.JvmFeatureInternal
+import org.gradle.api.tasks.GroovySourceDirectorySet
+import org.gradle.api.tasks.TaskProvider
+import org.gradle.api.tasks.javadoc.GroovydocAccess
+
+import javax.inject.Inject
+
+@CompileStatic
+abstract class GrailsGroovydocPlugin implements Plugin<Project> {
+
+ private ObjectFactory objects
+
+ @Inject
+ GrailsGroovydocPlugin(ObjectFactory objects) {
+ this.objects = objects
+ }
+
+ @CompileDynamic
+ String resolveProjectVersion(String artifact, Project project) {
+ String version = project.configurations.runtimeClasspath
+ .resolvedConfiguration
+ .resolvedArtifacts
+ .find {
+ it.moduleVersion.id.name == artifact
+ }?.moduleVersion?.id?.version
+ if (!version) {
+ return null
+ }
+ }
+
+ @Override
+ void apply(Project project) {
+ NamedDomainObjectProvider<Configuration> documentation = project.configurations.register('documentation') { Configuration doc ->
+ doc.canBeConsumed = false
+ doc.canBeResolved = true
+ doc.attributes {
+ it.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY))
+ it.attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL))
+ it.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
+ }
+ }
+
+ project.dependencies.add('documentation', project.dependencies.platform(project.rootProject.project(':grails-bom')))
+ project.dependencies.add('documentation', 'org.fusesource.jansi:jansi')
+ project.dependencies.add('documentation', 'jline:jline')
+ project.dependencies.add('documentation', 'com.github.javaparser:javaparser-core')
+ project.dependencies.add('documentation', 'org.apache.groovy:groovy')
+ project.dependencies.add('documentation', 'org.apache.groovy:groovy-groovydoc')
+ project.dependencies.add('documentation', 'org.apache.groovy:groovy-ant')
+ project.dependencies.add('documentation', 'org.apache.groovy:groovy-docgenerator')
+ project.dependencies.add('documentation', 'org.apache.groovy:groovy-templates')
+
+ TaskProvider<GrailsGroovydoc> grailsGroovydoc = project.tasks.register('grailsGroovydoc', GrailsGroovydoc)
+// grailsGroovydoc.configure { GrailsGroovydoc gdoc ->
+// gdoc.exclude('META-INF/**', '*yml', '*properties', '*xml', '**/Application.groovy', '**/Bootstrap.groovy', '**/resources.groovy')
+// gdoc.description = 'Generate Groovydoc API documentation for the main source code in an isolated process.'
+// gdoc.group = 'documentation'
+//
+// JvmFeatureInternal mainFeature = JavaPluginHelper.getJavaComponent(project).mainFeature
+// gdoc.classpath = mainFeature.sourceSet.output.plus(mainFeature.sourceSet.compileClasspath)
+// gdoc.source = (SourceDirectorySet) mainFeature.sourceSet.extensions.getByType(GroovySourceDirectorySet)
+//
+// gdoc.groovyClasspath = project.files(documentation)
+// gdoc.windowTitle = "${project.findProperty('pomArtifactId') ?: project.name} - ${project.findProperty('projectVersion')}"
+// gdoc.docTitle = "${project.findProperty('pomArtifactId') ?: project.name} - ${project.findProperty('projectVersion')}"
+// gdoc.access.set(GroovydocAccess.PROTECTED)
+// gdoc.includeAuthor.set(true)
+// gdoc.includeMainForScripts.set(false)
+// gdoc.processScripts.set(false)
+// gdoc.noTimestamp = true
+//
+// gdoc.doFirst {
+// def gebVersion = resolveProjectVersion('geb-spock', project)
+// if(gebVersion) {
+// gdoc.link("https://www.gebish.org/manual/${gebVersion}/api/", 'geb.')
+// }
+//
+// def testContainersVersion = resolveProjectVersion('testcontainers', project)
+// if(testContainersVersion) {
+// gdoc.link("https://javadoc.io/doc/org.testcontainers/testcontainers/${testContainersVersion}/", 'org.testcontainers.')
+// }
+//
+// def springVersion = resolveProjectVersion('spring-core', project)
+// if(springVersion) {
+// gdoc.link("https://docs.spring.io/spring-framework/docs/${springVersion}/javadoc-api/", 'org.springframework.core.')
+// }
+//
+// def springBootVersion = resolveProjectVersion('spring-boot', project)
+// if(springBootVersion) {
+// gdoc.link("https://docs.spring.io/spring-boot/docs/${springBootVersion}/api/", 'org.springframework.boot.')
+// }
+// }
+// }
+
+ project.tasks.named('groovydoc').configure {groovydoc ->
+ groovydoc.enabled = false
+ }
+ }
+}
diff --git a/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocWorker.groovy b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocWorker.groovy
new file mode 100644
index 0000000000..8496006f17
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocWorker.groovy
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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
+ *
+ * https://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.
+ */
+
+package org.apache.grails.internal.build
+
+import org.apache.groovy.util.SystemUtil
+import org.codehaus.groovy.tools.groovydoc.ClasspathResourceManager
+import org.codehaus.groovy.tools.groovydoc.GroovyDocTool
+import org.codehaus.groovy.tools.groovydoc.LinkArgument
+import org.codehaus.groovy.tools.groovydoc.gstringTemplates.GroovyDocTemplateInfo
+import org.gradle.api.tasks.javadoc.Groovydoc
+import org.gradle.workers.WorkAction
+
+abstract class GrailsGroovydocWorker implements WorkAction<GrailsGroovydocParameters> {
+ @Override
+ void execute() {
+ GrailsGroovydocParameters parameters = getParameters()
+
+ List<String> sourcePaths = parameters.source.getFiles().collect{ it.absolutePath }
+
+ List<String> packagesToDoc = new ArrayList<>();
+ Properties properties = new Properties();
+ properties.setProperty("windowTitle", windowTitle);
+ properties.setProperty("docTitle", docTitle);
+ properties.setProperty("footer", footer);
+ properties.setProperty("header", header);
+ checkScopeProperties(properties);
+ properties.setProperty("publicScope", publicScope.toString());
+ properties.setProperty("protectedScope", protectedScope.toString());
+ properties.setProperty("packageScope", packageScope.toString());
+ properties.setProperty("privateScope", privateScope.toString());
+ properties.setProperty("author", author.toString());
+ properties.setProperty("processScripts", processScripts.toString());
+ properties.setProperty("includeMainForScripts", includeMainForScripts.toString());
+ properties.setProperty("overviewFile", overviewFile != null ? overviewFile.getAbsolutePath() : "");
+ properties.setProperty("charset", charset != null ? charset : "");
+ properties.setProperty("fileEncoding", fileEncoding != null ? fileEncoding : "");
+ properties.setProperty("timestamp", Boolean.valueOf(!noTimestamp).toString());
+ properties.setProperty("versionStamp", Boolean.valueOf(!noVersionStamp).toString());
+ String phaseOverride = SystemUtil.getSystemPropertySafe("groovydoc.phase.override");
+ if (phaseOverride != null) properties.put("phaseOverride", phaseOverride);
+
+ if (sourcePath != null) {
+ sourceDirs.addExisting(sourcePath);
+ }
+
+ def links = parameters.links.get().collect{ link ->
+ LinkArgument arg = new LinkArgument()
+ arg.setHref(link.url)
+ arg.setPackages(link.packages.join(","))
+ arg
+ }
+
+ GroovyDocTool htmlTool = new GroovyDocTool(
+ new ClasspathResourceManager(), // we're gonna get the default templates out of the dist jar file
+ sourcePaths as String[],
+ GroovyDocTemplateInfo.DEFAULT_DOC_TEMPLATES,
+ GroovyDocTemplateInfo.DEFAULT_PACKAGE_TEMPLATES,
+ GroovyDocTemplateInfo.DEFAULT_CLASS_TEMPLATES,
+ links,
+ parameters.javaVersion.getOrNull(),
+ properties
+ );
+ }
+}
diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/grails.groovydoc.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/grails.groovydoc.properties
new file mode 100644
index 0000000000..82369d246e
--- /dev/null
+++ b/buildSrc/src/main/resources/META-INF/gradle-plugins/grails.groovydoc.properties
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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
+#
+# https://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.
+#
+
+implementation-class=org.apache.grails.internal.build.GrailsGroovydocPlugin
\ No newline at end of file
diff --git a/gradle/docs-config.gradle b/gradle/docs-config.gradle
index 5b5c7d1794..d4e1336a7c 100644
--- a/gradle/docs-config.gradle
+++ b/gradle/docs-config.gradle
@@ -17,8 +17,6 @@
* under the License.
*/
-apply from: rootProject.layout.projectDirectory.file('gradle/docs-dependencies.gradle')
-
ext {
includeInApiDocs = true
}
\ No newline at end of file
diff --git a/gradle/docs-dependencies.gradle b/gradle/docs-dependencies.gradle
deleted file mode 100644
index df7d1e8de4..0000000000
--- a/gradle/docs-dependencies.gradle
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * https://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.
- */
-configurations.register('documentation') {
- canBeConsumed = false
- canBeResolved = true
- 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, Usage.JAVA_RUNTIME))
- }
-}
-
-dependencies {
- add('documentation', platform(project(':grails-bom')))
- add('documentation', 'org.fusesource.jansi:jansi')
- add('documentation', 'jline:jline')
- add('documentation', 'com.github.javaparser:javaparser-core')
- add('documentation', 'org.apache.groovy:groovy')
- add('documentation', 'org.apache.groovy:groovy-groovydoc')
- add('documentation', 'org.apache.groovy:groovy-ant')
- add('documentation', 'org.apache.groovy:groovy-docgenerator')
- add('documentation', 'org.apache.groovy:groovy-templates')
-}
-
-String resolveProjectVersion(String artifact) {
- String version = configurations.runtimeClasspath
- .resolvedConfiguration
- .resolvedArtifacts
- .find {
- it.moduleVersion.id.name == artifact
- }?.moduleVersion?.id?.version
- if (!version) {
- return null
- }
-}
-
-tasks.withType(Groovydoc).configureEach { Groovydoc gdoc ->
- gdoc.exclude('META-INF/**', '*yml', '*properties', '*xml', '**/Application.groovy', '**/Bootstrap.groovy', '**/resources.groovy')
- gdoc.groovyClasspath = configurations.documentation
- gdoc.windowTitle = "${project.findProperty('pomArtifactId') ?: project.name} - $projectVersion"
- gdoc.docTitle = "${project.findProperty('pomArtifactId') ?: project.name} - $projectVersion"
- gdoc.access = GroovydocAccess.PROTECTED
- gdoc.includeAuthor = true
- gdoc.includeMainForScripts = false
- gdoc.processScripts = false
- gdoc.noTimestamp = true
-
- doFirst {
- def gebVersion = resolveProjectVersion('geb-spock')
- if(gebVersion) {
- gdoc.link("https://www.gebish.org/manual/${gebVersion}/api/", 'geb.')
- }
-
- def testContainersVersion = resolveProjectVersion('testcontainers')
- if(testContainersVersion) {
- gdoc.link("https://javadoc.io/doc/org.testcontainers/testcontainers/${testContainersVersion}/", 'org.testcontainers.')
- }
-
- def springVersion = resolveProjectVersion('spring-core')
- if(springVersion) {
- gdoc.link("https://docs.spring.io/spring-framework/docs/${springVersion}/javadoc-api/", 'org.springframework.core.')
- }
-
- def springBootVersion = resolveProjectVersion('spring-boot')
- if(springBootVersion) {
- gdoc.link("https://docs.spring.io/spring-boot/docs/${springBootVersion}/api/", 'org.springframework.boot.')
- }
- }
-}
\ No newline at end of file
diff --git a/grails-async/core/build.gradle b/grails-async/core/build.gradle
index 6a4f2b9679..dc280a2ac4 100644
--- a/grails-async/core/build.gradle
+++ b/grails-async/core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-async/gpars/build.gradle b/grails-async/gpars/build.gradle
index ab599f3da3..29b6837bd6 100644
--- a/grails-async/gpars/build.gradle
+++ b/grails-async/gpars/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-async/plugin/build.gradle b/grails-async/plugin/build.gradle
index f8ff94c033..f07dacd47a 100644
--- a/grails-async/plugin/build.gradle
+++ b/grails-async/plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-async/rxjava/build.gradle b/grails-async/rxjava/build.gradle
index b15111a395..107fbfb77e 100644
--- a/grails-async/rxjava/build.gradle
+++ b/grails-async/rxjava/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-async/rxjava2/build.gradle b/grails-async/rxjava2/build.gradle
index 41732df8d9..32558edd8e 100644
--- a/grails-async/rxjava2/build.gradle
+++ b/grails-async/rxjava2/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-async/rxjava3/build.gradle b/grails-async/rxjava3/build.gradle
index 3c62cff0dd..7f0e2e9db9 100644
--- a/grails-async/rxjava3/build.gradle
+++ b/grails-async/rxjava3/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-bootstrap/build.gradle b/grails-bootstrap/build.gradle
index b42df191c8..452b5a0966 100644
--- a/grails-bootstrap/build.gradle
+++ b/grails-bootstrap/build.gradle
@@ -21,6 +21,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-cache/build.gradle b/grails-cache/build.gradle
index 2575e34f18..8eb1465457 100644
--- a/grails-cache/build.gradle
+++ b/grails-cache/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-codecs-core/build.gradle b/grails-codecs-core/build.gradle
index 4fa52b2bb4..187c2e1fa1 100644
--- a/grails-codecs-core/build.gradle
+++ b/grails-codecs-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-codecs/build.gradle b/grails-codecs/build.gradle
index e0468e90ae..2bd27eb498 100644
--- a/grails-codecs/build.gradle
+++ b/grails-codecs/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-common/build.gradle b/grails-common/build.gradle
index 3dadf85c54..55ebc5d6e8 100644
--- a/grails-common/build.gradle
+++ b/grails-common/build.gradle
@@ -17,6 +17,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-console/build.gradle b/grails-console/build.gradle
index e2d0cc792d..b94d930673 100644
--- a/grails-console/build.gradle
+++ b/grails-console/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-controllers/build.gradle b/grails-controllers/build.gradle
index 457a8f9748..c4106b496e 100644
--- a/grails-controllers/build.gradle
+++ b/grails-controllers/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-converters/build.gradle b/grails-converters/build.gradle
index c9a0d65d31..d6987285e8 100644
--- a/grails-converters/build.gradle
+++ b/grails-converters/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-core/build.gradle b/grails-core/build.gradle
index e1d525c179..c541239cfb 100644
--- a/grails-core/build.gradle
+++ b/grails-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-data-docs/stage/build.gradle b/grails-data-docs/stage/build.gradle
index e9c7f7354b..f56f71cbd6 100644
--- a/grails-data-docs/stage/build.gradle
+++ b/grails-data-docs/stage/build.gradle
@@ -1,3 +1,5 @@
+import org.apache.grails.internal.build.GrailsGroovydoc
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -17,12 +19,14 @@
* under the License.
*/
-apply plugin: 'groovy'
+plugins {
+ id 'groovy'
+ id 'grails.groovydoc'
+}
// grails-data-mapping api
-def combinedGroovydoc = tasks.register('aggregateDataMappingGroovydoc', Groovydoc)
-apply from: rootProject.layout.projectDirectory.file('gradle/docs-dependencies.gradle')
-combinedGroovydoc.configure { Groovydoc task ->
+def combinedGroovydoc = tasks.named('grailsGroovydoc', GrailsGroovydoc)
+combinedGroovydoc.configure { GrailsGroovydoc task ->
task.windowTitle = "Grails Data Mapping API - ${projectVersion}"
task.docTitle = "Grails Data Mapping API - ${projectVersion}"
@@ -102,7 +106,7 @@ tasks.register('copyHibernate5Docs', Sync).configure { Sync it ->
tasks.register('docs', Sync).configure { Sync it ->
it.group = 'documentation'
- it.dependsOn('aggregateDataMappingGroovydoc', 'copyGuides', 'copyMongodbDocs', 'copyHibernate5Docs')
+ it.dependsOn('grailsGroovydoc', 'copyGuides', 'copyMongodbDocs', 'copyHibernate5Docs')
def websiteDir = rootProject.layout.projectDirectory.dir('grails-data-docs/data-mapping-website/src/main/resources')
def guidesDir = project.layout.buildDirectory.dir('guides/grails-data')
diff --git a/grails-data-hibernate5/boot-plugin/build.gradle b/grails-data-hibernate5/boot-plugin/build.gradle
index 5a054dca25..4b0fd8a9f2 100644
--- a/grails-data-hibernate5/boot-plugin/build.gradle
+++ b/grails-data-hibernate5/boot-plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-hibernate5/core/build.gradle b/grails-data-hibernate5/core/build.gradle
index 33fb9277d4..c8d9bf38e4 100644
--- a/grails-data-hibernate5/core/build.gradle
+++ b/grails-data-hibernate5/core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-hibernate5/docs/build.gradle b/grails-data-hibernate5/docs/build.gradle
index 77823b598d..f38d41a464 100644
--- a/grails-data-hibernate5/docs/build.gradle
+++ b/grails-data-hibernate5/docs/build.gradle
@@ -17,10 +17,13 @@
* under the License.
*/
+
+import org.apache.grails.internal.build.GrailsGroovydoc
import org.asciidoctor.gradle.jvm.AsciidoctorTask
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.asciidoctor.jvm.convert'
}
@@ -91,7 +94,7 @@ tasks.named('asciidoctor', AsciidoctorTask) { AsciidoctorTask it ->
]
}
-tasks.withType(Groovydoc).configureEach {
+tasks.withType(GrailsGroovydoc).configureEach {
it.dependsOn(rootProject.subprojects
.findAll { it.findProperty('gormApiDocs') }
.collect { ":${it.name}:groovydoc" })
diff --git a/grails-data-mongodb/boot-plugin/build.gradle b/grails-data-mongodb/boot-plugin/build.gradle
index 11b97e45c4..36664167ba 100644
--- a/grails-data-mongodb/boot-plugin/build.gradle
+++ b/grails-data-mongodb/boot-plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-mongodb/bson/build.gradle b/grails-data-mongodb/bson/build.gradle
index 646d1fe318..fe86803caf 100644
--- a/grails-data-mongodb/bson/build.gradle
+++ b/grails-data-mongodb/bson/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-mongodb/core/build.gradle b/grails-data-mongodb/core/build.gradle
index f7ac7978c8..c1bd413827 100644
--- a/grails-data-mongodb/core/build.gradle
+++ b/grails-data-mongodb/core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-mongodb/docs/build.gradle b/grails-data-mongodb/docs/build.gradle
index 0db93bfa7a..5413a9e858 100644
--- a/grails-data-mongodb/docs/build.gradle
+++ b/grails-data-mongodb/docs/build.gradle
@@ -17,10 +17,13 @@
* under the License.
*/
+
+import org.apache.grails.internal.build.GrailsGroovydoc
import org.asciidoctor.gradle.jvm.AsciidoctorTask
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.asciidoctor.jvm.convert'
}
@@ -98,7 +101,7 @@ tasks.named('asciidoctor', AsciidoctorTask) { AsciidoctorTask it ->
]
}
-tasks.withType(Groovydoc).configureEach { Groovydoc groovydoc ->
+tasks.withType(GrailsGroovydoc).configureEach { GrailsGroovydoc groovydoc ->
groovydoc.dependsOn(rootProject.subprojects
.findAll { it.findProperty('gormApiDocs') }
.collect { ":${it.name}:groovydoc" })
diff --git a/grails-data-mongodb/ext/build.gradle b/grails-data-mongodb/ext/build.gradle
index 86bcaa1539..c0d32ef0bb 100644
--- a/grails-data-mongodb/ext/build.gradle
+++ b/grails-data-mongodb/ext/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-mongodb/grails-plugin/build.gradle b/grails-data-mongodb/grails-plugin/build.gradle
index db68de1d36..0b7fa2a315 100644
--- a/grails-data-mongodb/grails-plugin/build.gradle
+++ b/grails-data-mongodb/grails-plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'java-test-fixtures'
}
diff --git a/grails-data-mongodb/gson-templates/build.gradle b/grails-data-mongodb/gson-templates/build.gradle
index f276cd8ca4..9dff1c4e23 100644
--- a/grails-data-mongodb/gson-templates/build.gradle
+++ b/grails-data-mongodb/gson-templates/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-data-simple/build.gradle b/grails-data-simple/build.gradle
index a603bcff0f..a64c6a0e94 100644
--- a/grails-data-simple/build.gradle
+++ b/grails-data-simple/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-databinding-core/build.gradle b/grails-databinding-core/build.gradle
index 4efb0bfcfb..d018ee8355 100644
--- a/grails-databinding-core/build.gradle
+++ b/grails-databinding-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-databinding/build.gradle b/grails-databinding/build.gradle
index 410535c324..730021cc1c 100644
--- a/grails-databinding/build.gradle
+++ b/grails-databinding/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-datamapping-async/build.gradle b/grails-datamapping-async/build.gradle
index 81458a5169..76510f9418 100644
--- a/grails-datamapping-async/build.gradle
+++ b/grails-datamapping-async/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-core-test/build.gradle b/grails-datamapping-core-test/build.gradle
index e55f775f23..9b66a1db80 100644
--- a/grails-datamapping-core-test/build.gradle
+++ b/grails-datamapping-core-test/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-core/build.gradle b/grails-datamapping-core/build.gradle
index 52ef07e4b8..b2555d3dd7 100644
--- a/grails-datamapping-core/build.gradle
+++ b/grails-datamapping-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-rx/build.gradle b/grails-datamapping-rx/build.gradle
index 12ec2fef9f..77d91d816d 100644
--- a/grails-datamapping-rx/build.gradle
+++ b/grails-datamapping-rx/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-support/build.gradle b/grails-datamapping-support/build.gradle
index 01c740d8a2..e51982dfd0 100644
--- a/grails-datamapping-support/build.gradle
+++ b/grails-datamapping-support/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-tck/build.gradle b/grails-datamapping-tck/build.gradle
index e89fc3067d..5983db9d69 100644
--- a/grails-datamapping-tck/build.gradle
+++ b/grails-datamapping-tck/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datamapping-validation/build.gradle b/grails-datamapping-validation/build.gradle
index 544cf7dc74..0269397918 100644
--- a/grails-datamapping-validation/build.gradle
+++ b/grails-datamapping-validation/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datasource/build.gradle b/grails-datasource/build.gradle
index c5fb199e6a..ee0c99f6a2 100644
--- a/grails-datasource/build.gradle
+++ b/grails-datasource/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-datastore-async/build.gradle b/grails-datastore-async/build.gradle
index 1b1838e4ae..8d4b1daa74 100644
--- a/grails-datastore-async/build.gradle
+++ b/grails-datastore-async/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datastore-core/build.gradle b/grails-datastore-core/build.gradle
index 7a70a7915e..840ebea370 100644
--- a/grails-datastore-core/build.gradle
+++ b/grails-datastore-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-datastore-web/build.gradle b/grails-datastore-web/build.gradle
index a177a1fb38..b5eab5e756 100644
--- a/grails-datastore-web/build.gradle
+++ b/grails-datastore-web/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-doc/build.gradle b/grails-doc/build.gradle
index 4272265841..82f88e074b 100644
--- a/grails-doc/build.gradle
+++ b/grails-doc/build.gradle
@@ -19,11 +19,13 @@
import grails.doc.AddReleaseDropDown
import grails.doc.gradle.PublishGuide
+import org.apache.grails.internal.build.GrailsGroovydoc
plugins {
id 'base'
id 'org.asciidoctor.jvm.convert'
id 'groovy'
+ id 'grails.groovydoc'
}
compileJava.options.release = javaVersion.toInteger()
@@ -56,9 +58,8 @@ dependencies {
}
// this task needs to be here instead of the root since bom resolution only occurs when the java / groovy plugins are applied
-def combinedGroovydoc = tasks.register('aggregateGroovydoc', Groovydoc)
-apply from: rootProject.layout.projectDirectory.file('gradle/docs-dependencies.gradle')
-combinedGroovydoc.configure { Groovydoc gdoc ->
+def combinedGroovydoc = tasks.named('grailsGroovydoc', GrailsGroovydoc)
+combinedGroovydoc.configure { GrailsGroovydoc gdoc ->
gdoc.windowTitle = "Grails $projectVersion"
gdoc.docTitle = "Grails $projectVersion"
@@ -117,7 +118,7 @@ asciidoctor {
'sourcedir': rootProject.projectDir.absolutePath
}
-asciidoctor.dependsOn('aggregateGroovydoc')
+asciidoctor.dependsOn('grailsGroovydoc')
tasks.register('dist', Zip).configure { Zip it ->
it.dependsOn 'docs'
@@ -160,7 +161,7 @@ String getVersion(String artifact) {
}
tasks.register('publishGuide', PublishGuide).configure { PublishGuide publish ->
- publish.dependsOn(['generateBomDocumentation', 'aggregateGroovydoc', 'jar', 'resolveGroovyVersion', 'processTestResources', 'compileTestJava', 'compileTestGroovy', 'test'])
+ publish.dependsOn(['generateBomDocumentation', 'grailsGroovydoc', 'jar', 'resolveGroovyVersion', 'processTestResources', 'compileTestJava', 'compileTestGroovy', 'test'])
// No language setting because we want the English guide to be
// generated with a 'en' in the path, but the source is in 'en'
@@ -250,7 +251,7 @@ tasks.register('generateGuide').configure { Task task ->
}
tasks.register('docs', Sync).configure { Sync it ->
- it.dependsOn 'aggregateGroovydoc', 'generateGuide', ':grails-data-docs-stage:docs'
+ it.dependsOn 'grailsGroovydoc', 'generateGuide', ':grails-data-docs-stage:docs'
it.group = 'documentation'
def manualDocsDir = project.layout.buildDirectory.dir('modified-guide')
diff --git a/grails-domain-class/build.gradle b/grails-domain-class/build.gradle
index c53f0d33dd..1f72567478 100644
--- a/grails-domain-class/build.gradle
+++ b/grails-domain-class/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-encoder/build.gradle b/grails-encoder/build.gradle
index 73504efd32..4dddf106e0 100644
--- a/grails-encoder/build.gradle
+++ b/grails-encoder/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/compat/build.gradle b/grails-events/compat/build.gradle
index 892c32cd60..b81524cfad 100644
--- a/grails-events/compat/build.gradle
+++ b/grails-events/compat/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/core/build.gradle b/grails-events/core/build.gradle
index 38d9198358..5aff3b6f02 100644
--- a/grails-events/core/build.gradle
+++ b/grails-events/core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/gpars/build.gradle b/grails-events/gpars/build.gradle
index c94fee9aa6..dac8116a22 100644
--- a/grails-events/gpars/build.gradle
+++ b/grails-events/gpars/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/plugin/build.gradle b/grails-events/plugin/build.gradle
index 1530d73768..f79fd19b1d 100644
--- a/grails-events/plugin/build.gradle
+++ b/grails-events/plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/rxjava/build.gradle b/grails-events/rxjava/build.gradle
index ebb69b7437..01ad1535e6 100644
--- a/grails-events/rxjava/build.gradle
+++ b/grails-events/rxjava/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/rxjava2/build.gradle b/grails-events/rxjava2/build.gradle
index 0697285af6..edfe174a8a 100644
--- a/grails-events/rxjava2/build.gradle
+++ b/grails-events/rxjava2/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/rxjava3/build.gradle b/grails-events/rxjava3/build.gradle
index 040c9bb162..fd16cccd37 100644
--- a/grails-events/rxjava3/build.gradle
+++ b/grails-events/rxjava3/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/spring/build.gradle b/grails-events/spring/build.gradle
index abdba35721..9afcfbeada 100644
--- a/grails-events/spring/build.gradle
+++ b/grails-events/spring/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-events/transforms/build.gradle b/grails-events/transforms/build.gradle
index 6a43d17adf..f2b4f02a12 100644
--- a/grails-events/transforms/build.gradle
+++ b/grails-events/transforms/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-fields/build.gradle b/grails-fields/build.gradle
index 74b4fd64e5..790c20eb40 100644
--- a/grails-fields/build.gradle
+++ b/grails-fields/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
id 'org.apache.grails.gradle.grails-plugin'
diff --git a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsPluginGradlePlugin.groovy b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsPluginGradlePlugin.groovy
index bcb93974fe..25ba49e087 100644
--- a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsPluginGradlePlugin.groovy
+++ b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsPluginGradlePlugin.groovy
@@ -202,7 +202,7 @@ class GrailsPluginGradlePlugin extends GrailsGradlePlugin {
project.rootProject.logger.info('Warning - a javadocTask was not found, so the ast source will not be included in the javadoc task')
}
- Task groovydocTask = taskContainer.findByName('groovydoc')
+ Task groovydocTask = taskContainer.findByName('grailsGroovydoc') ?: taskContainer.findByName('groovydoc')
if (groovydocTask) {
if (taskContainer.findByName('javadocJar') == null) {
taskContainer.create("javadocJar", Jar) {
diff --git a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/doc/GrailsDocGradlePlugin.groovy b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/doc/GrailsDocGradlePlugin.groovy
index 6c2dc0eef1..29f07da687 100644
--- a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/doc/GrailsDocGradlePlugin.groovy
+++ b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/doc/GrailsDocGradlePlugin.groovy
@@ -24,6 +24,7 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.artifacts.Configuration
+import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.javadoc.Groovydoc
import org.gradle.api.tasks.javadoc.Javadoc
@@ -43,26 +44,25 @@ class GrailsDocGradlePlugin implements Plugin<Project> {
Configuration docConfiguration = project.configurations.create(DOC_CONFIGURATION)
project.dependencies.add(DOC_CONFIGURATION, "org.grails:grails-docs:${BuildSettings.getPackage().getImplementationVersion()}")
- Groovydoc groovydocTask = (Groovydoc)project.tasks.findByName('groovydoc')
+ Groovydoc groovydocTask = (Groovydoc)(project.tasks.findByName('grailsGroovydoc') ?: project.tasks.findByName('groovydoc'))
Javadoc javadocTask = (Javadoc)project.tasks.findByName('javadoc')
if(groovydocTask && javadocTask) {
+ TaskProvider<PublishGuideTask> docsTask = project.tasks.register('docs', PublishGuideTask)
+ docsTask.configure {
+ it.classpath = docConfiguration
- Task docsTask = project.tasks.create('docs', PublishGuideTask)
-
- docsTask.classpath = docConfiguration
-
- File applicationYml = project.file("${project.projectDir}/grails-app/conf/application.yml")
- if(applicationYml.exists()) {
- docsTask.propertiesFile = applicationYml
+ File applicationYml = project.layout.projectDirectory.file('grails-app/conf/application.yml').getAsFile()
+ if(applicationYml.exists()) {
+ it.propertiesFile = applicationYml
+ }
+ it.destinationDir = project.file("${project.buildDir}/docs/manual")
+ it.source = project.file("${project.projectDir}/src/docs")
+ it.resourcesDir = project.file("${project.projectDir}/src/docs")
+ it.groovydocDir = groovydocTask.destinationDir
+ it.javadocDir = javadocTask.destinationDir
+ it.dependsOn(groovydocTask, javadocTask)
}
- docsTask.destinationDir = project.file("${project.buildDir}/docs/manual")
- docsTask.source = project.file("${project.projectDir}/src/docs")
- docsTask.resourcesDir = project.file("${project.projectDir}/src/docs")
- docsTask.groovydocDir = groovydocTask.destinationDir
- docsTask.javadocDir = javadocTask.destinationDir
- docsTask.dependsOn(groovydocTask)
- docsTask.dependsOn(javadocTask)
}
}
}
diff --git a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/publishing/GrailsPublishGradlePlugin.groovy b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/publishing/GrailsPublishGradlePlugin.groovy
index 8b6366528f..51c44dee09 100644
--- a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/publishing/GrailsPublishGradlePlugin.groovy
+++ b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/publishing/GrailsPublishGradlePlugin.groovy
@@ -509,7 +509,7 @@ Note: if project properties are used, the properties must be defined prior to ap
final TaskContainer tasks = project.tasks
tasks.named('javadoc').configure {
- Task groovyDocTask = tasks.findByName('groovydoc')
+ Task groovyDocTask = tasks.findByName('grailsGroovydoc') ?: tasks.findByName('groovydoc')
if (groovyDocTask) {
project.rootProject.logger.info('Configuring javadocJar task for project {} to include groovydoc', project.name)
it.enabled = false
@@ -522,7 +522,7 @@ Note: if project properties are used, the properties must be defined prior to ap
jar.dirMode = 0755 // To avoid platform specific defaults
jar.fileMode = 0644 // to avoid platform specific defaults
- Groovydoc groovyDocTask = tasks.findByName('groovydoc')
+ Groovydoc groovyDocTask = tasks.findByName('grailsGroovydoc') ?: tasks.findByName('groovydoc')
if (groovyDocTask) {
jar.dependsOn(groovyDocTask)
@@ -581,7 +581,7 @@ Note: if project properties are used, the properties must be defined prior to ap
// }
registerValidationTask(project, 'grailsPublishValidation') {
- Task groovyDocTask = project.tasks.findByName('groovydoc')
+ Task groovyDocTask = tasks.findByName('grailsGroovydoc') ?: project.tasks.findByName('groovydoc')
if (groovyDocTask) {
if (!groovyDocTask.enabled) {
throw new RuntimeException('Groovydoc task is disabled. Please enable it to ensure javadoc can be published correctly with the Grails Publish Plugin.')
diff --git a/grails-gsp/core/build.gradle b/grails-gsp/core/build.gradle
index 30362e0b1f..4df1c90772 100644
--- a/grails-gsp/core/build.gradle
+++ b/grails-gsp/core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-gsp/grails-sitemesh3/build.gradle b/grails-gsp/grails-sitemesh3/build.gradle
index 19cf1c2bdf..022d63745c 100644
--- a/grails-gsp/grails-sitemesh3/build.gradle
+++ b/grails-gsp/grails-sitemesh3/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
id 'org.apache.grails.gradle.grails-plugin'
diff --git a/grails-gsp/grails-taglib/build.gradle b/grails-gsp/grails-taglib/build.gradle
index fdb81e6d1c..0a45298b10 100644
--- a/grails-gsp/grails-taglib/build.gradle
+++ b/grails-gsp/grails-taglib/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'project-report'
id 'java-library'
}
diff --git a/grails-gsp/grails-web-gsp-taglib/build.gradle b/grails-gsp/grails-web-gsp-taglib/build.gradle
index 6c2deb3629..542d88f3bb 100644
--- a/grails-gsp/grails-web-gsp-taglib/build.gradle
+++ b/grails-gsp/grails-web-gsp-taglib/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'project-report'
id 'java-library'
}
diff --git a/grails-gsp/grails-web-gsp/build.gradle b/grails-gsp/grails-web-gsp/build.gradle
index ffc612da76..023e7b4e8c 100644
--- a/grails-gsp/grails-web-gsp/build.gradle
+++ b/grails-gsp/grails-web-gsp/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'project-report'
id 'java-library'
}
diff --git a/grails-gsp/grails-web-jsp/build.gradle b/grails-gsp/grails-web-jsp/build.gradle
index 63dbc6b172..22f57a61f8 100644
--- a/grails-gsp/grails-web-jsp/build.gradle
+++ b/grails-gsp/grails-web-jsp/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'project-report'
id 'java-library'
}
diff --git a/grails-gsp/grails-web-taglib/build.gradle b/grails-gsp/grails-web-taglib/build.gradle
index 1f9d94d0fa..0759d3a4af 100644
--- a/grails-gsp/grails-web-taglib/build.gradle
+++ b/grails-gsp/grails-web-taglib/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-gsp/plugin/build.gradle b/grails-gsp/plugin/build.gradle
index 45bce77b51..7313373f94 100644
--- a/grails-gsp/plugin/build.gradle
+++ b/grails-gsp/plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
id 'org.apache.grails.gradle.grails-plugin'
diff --git a/grails-i18n/build.gradle b/grails-i18n/build.gradle
index a07554dfbb..79d5042eaa 100644
--- a/grails-i18n/build.gradle
+++ b/grails-i18n/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-interceptors/build.gradle b/grails-interceptors/build.gradle
index 9e74dd99d2..08d63a3681 100644
--- a/grails-interceptors/build.gradle
+++ b/grails-interceptors/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-logging/build.gradle b/grails-logging/build.gradle
index 075f390df5..33719d7d07 100644
--- a/grails-logging/build.gradle
+++ b/grails-logging/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-mimetypes/build.gradle b/grails-mimetypes/build.gradle
index 127f78d775..8e62e710c6 100644
--- a/grails-mimetypes/build.gradle
+++ b/grails-mimetypes/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-profiles/base/build.gradle b/grails-profiles/base/build.gradle
index 1fd0cb869a..ffba384138 100644
--- a/grails-profiles/base/build.gradle
+++ b/grails-profiles/base/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/plugin/build.gradle b/grails-profiles/plugin/build.gradle
index e393d86e19..5294839f7a 100644
--- a/grails-profiles/plugin/build.gradle
+++ b/grails-profiles/plugin/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/profile/build.gradle b/grails-profiles/profile/build.gradle
index a01147e39a..7c3e2b1c41 100644
--- a/grails-profiles/profile/build.gradle
+++ b/grails-profiles/profile/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/rest-api-plugin/build.gradle b/grails-profiles/rest-api-plugin/build.gradle
index 0a39af6246..9171805972 100644
--- a/grails-profiles/rest-api-plugin/build.gradle
+++ b/grails-profiles/rest-api-plugin/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/rest-api/build.gradle b/grails-profiles/rest-api/build.gradle
index 0317dbd037..30d4104e3d 100644
--- a/grails-profiles/rest-api/build.gradle
+++ b/grails-profiles/rest-api/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/web-plugin/build.gradle b/grails-profiles/web-plugin/build.gradle
index c93ed03c8f..765780e81b 100644
--- a/grails-profiles/web-plugin/build.gradle
+++ b/grails-profiles/web-plugin/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-profiles/web/build.gradle b/grails-profiles/web/build.gradle
index f1a76aa15a..00b18a1597 100644
--- a/grails-profiles/web/build.gradle
+++ b/grails-profiles/web/build.gradle
@@ -16,6 +16,7 @@
*/
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-profile'
}
diff --git a/grails-rest-transforms/build.gradle b/grails-rest-transforms/build.gradle
index fa3402b68c..b866eecad3 100644
--- a/grails-rest-transforms/build.gradle
+++ b/grails-rest-transforms/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-services/build.gradle b/grails-services/build.gradle
index 47b9df936c..1005a01cf0 100644
--- a/grails-services/build.gradle
+++ b/grails-services/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-shell-cli/build.gradle b/grails-shell-cli/build.gradle
index d0bf08f576..f65a60e4ae 100644
--- a/grails-shell-cli/build.gradle
+++ b/grails-shell-cli/build.gradle
@@ -18,6 +18,7 @@
plugins {
id 'application'
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-spring/build.gradle b/grails-spring/build.gradle
index da9ddbfcf0..707a6138ee 100644
--- a/grails-spring/build.gradle
+++ b/grails-spring/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-test-core/build.gradle b/grails-test-core/build.gradle
index 14b625c5e3..66adf8be2b 100644
--- a/grails-test-core/build.gradle
+++ b/grails-test-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-test-examples/cache/build.gradle b/grails-test-examples/cache/build.gradle
index 59937677b7..5e3b777d28 100644
--- a/grails-test-examples/cache/build.gradle
+++ b/grails-test-examples/cache/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'idea'
id 'eclipse'
}
diff --git a/grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle b/grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle
index cfbcf4b49f..497fb56662 100644
--- a/grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle
+++ b/grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'org.springframework.boot'
}
diff --git a/grails-test-examples/hibernate5/standalone-hibernate/build.gradle b/grails-test-examples/hibernate5/standalone-hibernate/build.gradle
index 92a0e6a7a8..44143e8d63 100644
--- a/grails-test-examples/hibernate5/standalone-hibernate/build.gradle
+++ b/grails-test-examples/hibernate5/standalone-hibernate/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
}
version = '0.0.1'
diff --git a/grails-test-examples/views-functional-tests-plugin/build.gradle b/grails-test-examples/views-functional-tests-plugin/build.gradle
index 6365e81491..a617ed5128 100644
--- a/grails-test-examples/views-functional-tests-plugin/build.gradle
+++ b/grails-test-examples/views-functional-tests-plugin/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'org.apache.grails.gradle.grails-plugin'
id 'org.apache.grails.gradle.grails-gson'
diff --git a/grails-test-examples/views-functional-tests/build.gradle b/grails-test-examples/views-functional-tests/build.gradle
index def877a221..d69712e57e 100644
--- a/grails-test-examples/views-functional-tests/build.gradle
+++ b/grails-test-examples/views-functional-tests/build.gradle
@@ -20,6 +20,7 @@
plugins {
id 'application'
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-gsp'
id 'org.apache.grails.gradle.grails-web'
id 'asset-pipeline'
diff --git a/grails-test-suite-persistence/build.gradle b/grails-test-suite-persistence/build.gradle
index d00fd7ea9f..6bc154bbdb 100644
--- a/grails-test-suite-persistence/build.gradle
+++ b/grails-test-suite-persistence/build.gradle
@@ -87,28 +87,58 @@ dependencies {
testImplementation 'org.objenesis:objenesis'
}
-test {
- maxParallelForks = configuredTestParallel
- forkEvery = isCiBuild ? 25 : 100
- if(!isCiBuild) {
- maxHeapSize = '2048m'
+def testGrailsDomainBinder = tasks.register('testGrailsDomainBinder', Test)
+testGrailsDomainBinder.configure { Test it ->
+ onlyIf {
+ ![
+ 'onlyFunctionalTests',
+ 'onlyHibernate5Tests',
+ 'onlyMongodbTests',
+ 'skipCoreTests',
+ 'skipTests'
+ ].find {
+ project.hasProperty(it)
+ }
}
- excludes = ['**/GrailsDomainBinderTests.class',
- '**/ComponentValidationTests.class',
- '**/HibernateMappingUniqueConstraintTests.class']
+
+ it.includes = [
+ '**/GrailsDomainBinderTests.class'
+ ]
}
-task testGrailsDomainBinder(type: Test) { includes = [
- '**/GrailsDomainBinderTests.class'
- ] }
+def testIsolatedPersistentOne = tasks.register('testIsolatedPersistentOne', Test)
+testIsolatedPersistentOne.configure {Test it ->
+ onlyIf {
+ ![
+ 'onlyFunctionalTests',
+ 'onlyHibernate5Tests',
+ 'onlyMongodbTests',
+ 'skipCoreTests',
+ 'skipTests'
+ ].find {
+ project.hasProperty(it)
+ }
+ }
+ it.includes = [
+ '**/ComponentValidationTests.class',
+ '**/HibernateMappingUniqueConstraintTests.class'
+ ]
+}
-task testIsolatedPersistentOne(type: Test) {
- includes = ['**/ComponentValidationTests.class']
- includes = ['**/HibernateMappingUniqueConstraintTests.class']
+tasks.named('test', Test).configure {Test it ->
+ it.dependsOn testGrailsDomainBinder, testIsolatedPersistentOne
+
+ it.maxParallelForks = configuredTestParallel
+ it.forkEvery = isCiBuild ? 25 : 100
+ if(!isCiBuild) {
+ it.maxHeapSize = '2048m'
+ }
+ it.excludes = ['**/GrailsDomainBinderTests.class',
+ '**/ComponentValidationTests.class',
+ '**/HibernateMappingUniqueConstraintTests.class']
}
-test.dependsOn testGrailsDomainBinder, testIsolatedPersistentOne
tasks.withType(Groovydoc).configureEach {
// tests do not have groovydoc
diff --git a/grails-test-suite-uber/build.gradle b/grails-test-suite-uber/build.gradle
index 6af35c9af7..03e6e7e58d 100644
--- a/grails-test-suite-uber/build.gradle
+++ b/grails-test-suite-uber/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'project-report'
}
diff --git a/grails-testing-support-core/build.gradle b/grails-testing-support-core/build.gradle
index e508918187..5f533c60e7 100644
--- a/grails-testing-support-core/build.gradle
+++ b/grails-testing-support-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-testing-support-datamapping/build.gradle b/grails-testing-support-datamapping/build.gradle
index cd25137390..89b4d8adc0 100755
--- a/grails-testing-support-datamapping/build.gradle
+++ b/grails-testing-support-datamapping/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-testing-support-mongodb/build.gradle b/grails-testing-support-mongodb/build.gradle
index ef7c10c8f7..4de4b7dbe4 100644
--- a/grails-testing-support-mongodb/build.gradle
+++ b/grails-testing-support-mongodb/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-testing-support-views-gson/build.gradle b/grails-testing-support-views-gson/build.gradle
index 1b9b9e9fec..6876037eb0 100644
--- a/grails-testing-support-views-gson/build.gradle
+++ b/grails-testing-support-views-gson/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-testing-support-web/build.gradle b/grails-testing-support-web/build.gradle
index 41509a8040..f910bffe80 100755
--- a/grails-testing-support-web/build.gradle
+++ b/grails-testing-support-web/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-url-mappings/build.gradle b/grails-url-mappings/build.gradle
index 7b3f7144a8..17f1420598 100644
--- a/grails-url-mappings/build.gradle
+++ b/grails-url-mappings/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-validation/build.gradle b/grails-validation/build.gradle
index d3a7c7f2f2..f4becbcc73 100644
--- a/grails-validation/build.gradle
+++ b/grails-validation/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-views-core/build.gradle b/grails-views-core/build.gradle
index b97851c866..5314bd96b3 100644
--- a/grails-views-core/build.gradle
+++ b/grails-views-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
}
diff --git a/grails-views-gson/build.gradle b/grails-views-gson/build.gradle
index 3347c259d1..63b853e93e 100644
--- a/grails-views-gson/build.gradle
+++ b/grails-views-gson/build.gradle
@@ -20,6 +20,7 @@
plugins {
id 'java-library'
id 'groovy'
+ id 'grails.groovydoc'
id 'org.apache.grails.gradle.grails-plugin'
}
diff --git a/grails-views-markup/build.gradle b/grails-views-markup/build.gradle
index c74317e8a5..648df1e09b 100644
--- a/grails-views-markup/build.gradle
+++ b/grails-views-markup/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'org.apache.grails.gradle.grails-plugin'
}
diff --git a/grails-web-boot/build.gradle b/grails-web-boot/build.gradle
index c2fe2aaf83..5e86161628 100644
--- a/grails-web-boot/build.gradle
+++ b/grails-web-boot/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-web-common/build.gradle b/grails-web-common/build.gradle
index 703eaac6ce..ebcdc15837 100644
--- a/grails-web-common/build.gradle
+++ b/grails-web-common/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-web-core/build.gradle b/grails-web-core/build.gradle
index 027588c513..70ba3774d4 100644
--- a/grails-web-core/build.gradle
+++ b/grails-web-core/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-web-databinding/build.gradle b/grails-web-databinding/build.gradle
index 1d6e8d4e7f..dfc7f31cdd 100644
--- a/grails-web-databinding/build.gradle
+++ b/grails-web-databinding/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-web-mvc/build.gradle b/grails-web-mvc/build.gradle
index 6f9bad0ba5..6c289f6588 100644
--- a/grails-web-mvc/build.gradle
+++ b/grails-web-mvc/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}
diff --git a/grails-web-url-mappings/build.gradle b/grails-web-url-mappings/build.gradle
index f9b3bf36ef..4d03daa481 100644
--- a/grails-web-url-mappings/build.gradle
+++ b/grails-web-url-mappings/build.gradle
@@ -19,6 +19,7 @@
plugins {
id 'groovy'
+ id 'grails.groovydoc'
id 'java-library'
id 'project-report'
}