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 <[email protected]> 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' }
