blob: a7298e42d076c1394d30aed898bcf1acee6fc018 [file] [log] [blame]
import org.asciidoctor.gradle.jvm.AsciidoctorTask
plugins {
id 'groovy'
id 'org.asciidoctor.jvm.convert' version "${asciidoctorVersion}"
}
version = projectVersion
ext {
isReleaseVersion = !projectVersion.endsWith('-SNAPSHOT')
coreProjects = ['grails-datastore-core', 'grails-datamapping-core']
}
configurations {
documentation {
attributes {
attribute(Bundling.BUNDLING_ATTRIBUTE, (Bundling) (objects.named(Bundling, 'external')))
}
}
}
dependencies {
documentation platform("org.apache.grails:grails-bom:$grailsVersion")
documentation 'com.github.javaparser:javaparser-core'
documentation "info.picocli:picocli:$picocliVersion"
documentation 'org.apache.groovy:groovy-dateutil'
documentation 'org.fusesource.jansi:jansi'
documentation 'org.apache.grails.bootstrap:grails-bootstrap'
documentation 'org.apache.grails:grails-core'
documentation 'org.apache.grails:grails-spring'
documentation "org.hibernate:hibernate-core-jakarta:$hibernateVersion"
coreProjects.each {
documentation "org.apache.grails.data:$it"
}
rootProject.subprojects
.findAll { it.findProperty('apiDocs') }
.each { documentation project(":$it.name") }
}
tasks.named('asciidoctor', AsciidoctorTask) {
inputs.dir layout.projectDirectory.dir('src/docs')
outputs.dir layout.buildDirectory.dir('docs')
baseDirFollowsSourceDir()
resources {
from("$project.projectDir/src/docs/asciidoc/images")
into './images'
}
attributes(
'experimental' : 'true',
'compat-mode' : 'true',
'toc' : 'left',
'icons' : 'font',
'reproducible' : '',
'version' : projectVersion,
'pluginVersion' : projectVersion,
'groupId' : project.group,
'artifactId' : project.name,
'sourcedir' : "$project.rootDir",
'migrationPluginExamplesDir' : rootProject.layout.projectDirectory.dir('grails-database-migration/src/integration-test/resources').asFile.absolutePath,
'migrationPluginGroupId' : rootProject.findProject(':hibernate5-database-migration').group,
'migrationPluginArtifactId' : rootProject.findProject(':hibernate5-database-migration').name,
'liquibaseHibernate5Version': liquibaseHibernate5Version
)
jvm {
jvmArgs('--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', '--add-opens', 'java.base/java.io=ALL-UNNAMED')
}
}
tasks.register('copyDocs', Copy) {
group = 'documentation'
dependsOn('asciidoctor')
mustRunAfter('asciidoctor', 'groovydoc', 'copyResources')
finalizedBy('cleanAsciidoc')
from(layout.buildDirectory.dir('docs/asciidoc'))
into(layout.buildDirectory.dir('docs/manual'))
}
tasks.register('cleanAsciidoc', Delete) {
group = 'documentation'
delete(layout.buildDirectory.dir('docs/asciidoc'))
}
tasks.withType(Groovydoc).configureEach {
docTitle = "GORM for Hibernate 5 - $project.version"
def sourceFiles = coreProjects.collect {
rootProject.layout.projectDirectory.files("$it/src/main/groovy")
}.sum()
rootProject.subprojects
.findAll { it.findProperty('apiDocs') }
.each { sourceFiles += it.files('src/main/groovy') }
source = sourceFiles
destinationDir = layout.buildDirectory.dir('docs/api').get().asFile
access = GroovydocAccess.PROTECTED
processScripts = false
includeMainForScripts = false
includeAuthor = false
classpath = configurations.documentation
groovyClasspath += configurations.documentation
}
tasks.register('copyResources', Copy) {
group = 'documentation'
from(layout.projectDirectory.dir('src/docs/resources'))
into(layout.buildDirectory.dir('docs'))
}
tasks.register('docs') {
group = 'documentation'
dependsOn('asciidoctor', 'copyDocs', 'cleanAsciidoc', 'groovydoc', 'copyResources',
rootProject.subprojects
.findAll { it.findProperty('apiDocs') }
.collect { ":${it.name}:groovydoc" }
)
finalizedBy('assembleDocsDist')
}
tasks.register('assembleDocsDist', Zip) {
group = 'documentation'
dependsOn('docs', 'copyDocs')
from(layout.buildDirectory.dir('docs'))
archiveFileName = "${project.name}-${project.version}.zip"
destinationDirectory = project.layout.buildDirectory.dir('distributions')
}