hibernate-orm/documentation/documentation.gradle

155 lines
4.6 KiB
Groovy

buildscript {
repositories {
mavenCentral()
mavenLocal()
mavenRepo name: 'jboss-nexus', url: "http://repository.jboss.org/nexus/content/groups/public/"
maven {
name 'Bintray Asciidoctor repo'
url 'http://dl.bintray.com/content/aalmiray/asciidoctor'
}
jcenter()
}
dependencies {
classpath "org.jboss.jdocbook:gradle-jdocbook:1.2.1"
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:0.7.0'
}
}
apply plugin: "java"
apply plugin: "jdocbook"
ext.pressgangVersion = '3.0.0'
dependencies {
jdocbookXsl "org.jboss.pressgang:pressgang-xslt-ns:${pressgangVersion}"
jdocbookXsl "org.jboss.pressgang:pressgang-fonts:${pressgangVersion}"
jdocbookStyles "org.jboss.pressgang:pressgang-jdocbook-style:${pressgangVersion}"
}
defaultTasks 'buildDocs'
jdocbook {
// apply shared formatting config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
format('html_single') {
finalName = "index.html"
stylesheet = "classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl"
}
format('html') {
finalName = "index.html"
stylesheet = "classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl"
}
// book-specific config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
quickstart {
masterSourceDocumentName = 'Hibernate_Getting_Started_Guide.xml'
}
devguide {
masterSourceDocumentName = 'Hibernate_Development_Guide.xml'
useRelativeImageUris = false
}
manual {
masterSourceDocumentName = 'HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml'
}
metamodelgen {
masterSourceDocumentName = 'master.xml'
}
}
// todo : make this part of gradle-jdocbook.
// specifically the ability to supply ant-style resource for images (dir + include/exclude patterns)
stageStyles_devguide.doLast {
logger.lifecycle( "Staging devguide-specific style resources")
copy {
into project.file( 'target/docbook/stage/devguide/images' )
from project.file( 'src/main/docbook/devguide/en-US' )
include '**/images/*.png'
include '**/images/*.svg'
includeEmptyDirs = false
}
}
stageStyles_metamodelgen.doLast {
logger.lifecycle( "Staging metamodelgen-specific style resources")
copy {
from project.file( 'src/main/docbook/metamodelgen/en-US/images' )
into project.file( "${buildDir}/docbook/stage/metamodelgen/images" )
include '*.png'
includeEmptyDirs = false
}
}
[ 'devguide', 'manual', 'quickstart', 'metamodelgen' ].each { bookName ->
tasks[ "stageStyles_$bookName" ].doLast {
logger.lifecycle( "Staging local style resources")
copy {
into project.file( "target/docbook/stage/$bookName" )
from project.file( 'src/main/style' )
includeEmptyDirs = false
}
}
}
task buildTutorialZip(type: Zip) {
destinationDir = file( "target/work/tutorials" )
archiveName = 'hibernate-tutorials.zip'
from 'src/main/docbook/quickstart/tutorials'
expand(
version: project.version,
slf4j: "1.7.5",
junit: parent.junitVersion,
h2: parent.h2Version
)
}
buildDocs.dependsOn buildTutorialZip
buildDocs.doLast {
for ( File languageDir : dirList( "target/docbook/publish/quickstart" ) ) {
for ( File formatDir : dirList( languageDir ) ) {
final File copyDir = new File( formatDir, "files" );
copyDir.mkdirs();
ant.copy( file: buildTutorialZip.archivePath.getAbsolutePath(), todir: copyDir.getAbsolutePath() )
}
}
}
File[] dirList(String dirName) {
return dirList( (File) file(dirName) );
}
File[] dirList(File dir) {
return dir.listFiles({file -> file.isDirectory() } as FileFilter).sort();
}
// asciidoctor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// - aggregator
task asciidoctor(type: Task, group: 'Documentation')
// - ServiceRegistry guide
task generateRegistryGuide(type: Task, group: 'Documentation')
asciidoctor.dependsOn generateRegistryGuide
task generateRegistryGuideHtml(type: org.asciidoctor.gradle.AsciidoctorTask, group: 'Documentation') {
description = 'Generates the ServiceRegistry topical guide in HTML format.'
backend = 'html5'
sourceDir = file( 'src/main/asciidoc/topical/registries' )
// sourceDocumentName = 'ServiceRegistries.adoc'
outputDir = new File("$buildDir/asciidoc/topical/html")
}
tasks.withType(org.asciidoctor.gradle.AsciidoctorTask) { docTask ->
options = [
logDocuments: true,
attributes: [
icons: 'font',
'source-highlighter': 'prettify',
experimental: true
]
]
}