Created
July 14, 2015 18:27
-
-
Save sebersole/e719cf603dc712306cdc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.asciidoctor.gradle.AsciidoctorTask | |
/* | |
* Hibernate, Relational Persistence for Idiomatic Java | |
* | |
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. | |
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. | |
*/ | |
buildscript { | |
repositories { | |
mavenCentral() | |
mavenLocal() | |
maven { | |
name 'jboss-nexus' | |
url "http://repository.jboss.org/nexus/content/groups/public/" | |
} | |
jcenter() | |
} | |
dependencies { | |
classpath "org.jboss.jdocbook:gradle-jdocbook:1.2.2" | |
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.2' | |
} | |
} | |
apply plugin: "java" | |
apply plugin: "jdocbook" | |
apply from: "${rootProject.projectDir}/utilities.gradle" | |
defaultTasks 'buildDocs' | |
configurations { | |
asciidoclet { | |
description = 'Dependencies for Asciidoclet (the javadoc doclet tool for using Asciidoc)' | |
} | |
asciidoctor | |
} | |
if ( JavaVersion.current().isJava8Compatible() ) { | |
tasks.withType( Javadoc ) { | |
options.addStringOption( 'Xdoclint:none', '-quiet' ) | |
} | |
} | |
dependencies { | |
ext.pressgangVersion = '3.0.0' | |
asciidoctor 'org.asciidoctor:asciidoctorj:1.5.2' | |
asciidoclet 'org.asciidoctor:asciidoclet:0.+' | |
jdocbookXsl "org.jboss.pressgang:pressgang-xslt-ns:${pressgangVersion}" | |
jdocbookXsl "org.jboss.pressgang:pressgang-fonts:${pressgangVersion}" | |
jdocbookStyles "org.jboss.pressgang:pressgang-jdocbook-style:${pressgangVersion}" | |
} | |
task buildDocs { | |
group 'Documentation' | |
description 'Grouping task for performing all documentation building tasks' | |
} | |
// aggregated JavaDoc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
final File javadocDir = mkdir( new File( (File) project.buildDir, 'javadocs' ) ); | |
/** | |
* Builds the JavaDocs aggregated (unified) across all the sub-projects | |
*/ | |
task aggregateJavadocs(type: Javadoc) { | |
description = 'Builds the aggregated (unified) JavaDocs across all sub-projects' | |
final int copyrightYear = new GregorianCalendar().get( Calendar.YEAR ); | |
// exclude any generated sources (this is not working: http://forums.gradle.org/gradle/topics/excluding_generated_source_from_javadoc) | |
exclude "**/generated-src/**" | |
// process each project, building up: | |
// 1) appropriate sources | |
// 2) classpath | |
// 3) the package list for groups | |
Set<String> apiPackages = new HashSet<String>() | |
Set<String> spiPackages = new HashSet<String>() | |
Set<String> internalPackages = new HashSet<String>() | |
parent.subprojects.each{ Project subProject-> | |
// skip certain sub-projects | |
if ( ['release','documentation'].contains( subProject.name ) ) { | |
return; | |
} | |
// we only care about the main SourceSet... | |
source subProject.sourceSets.main.java | |
if( classpath ) { | |
classpath += subProject.sourceSets.main.output + subProject.sourceSets.main.compileClasspath | |
} | |
else { | |
classpath = subProject.sourceSets.main.output + subProject.sourceSets.main.compileClasspath | |
} | |
subProject.sourceSets.main.java.each { javaFile -> | |
final String packageName = determinePackageName( subProject.sourceSets.main.java, javaFile ); | |
if ( packageName.endsWith( ".internal" ) || packageName.contains( ".internal." ) ) { | |
internalPackages.add( packageName ); | |
} | |
else if ( packageName.endsWith( ".spi" ) || packageName.contains( ".spi." ) ) { | |
spiPackages.add( packageName ); | |
} | |
else if ( packageName.startsWith( "org.hibernate.testing" ) ) { | |
// do nothing as testing support is already handled... | |
} | |
else { | |
apiPackages.add( packageName ); | |
} | |
} | |
} | |
// apply standard config | |
maxMemory = '512m' | |
destinationDir = javadocDir | |
configure( options ) { | |
overview = rootProject.file( 'shared/javadoc/overview.html' ) | |
stylesheetFile = rootProject.file( 'shared/javadoc/stylesheet.css' ) | |
windowTitle = 'Hibernate JavaDocs' | |
docTitle = "Hibernate JavaDoc ($project.version)" | |
bottom = "Copyright © 2001-$copyrightYear <a href=\"http://redhat.com\">Red Hat, Inc.</a> All Rights Reserved." | |
use = true | |
options.encoding = 'UTF-8' | |
links = [ 'http://download.oracle.com/javase/6/docs/api/', 'http://download.oracle.com/javaee/6/api/' ] | |
group( 'API', apiPackages.asList() ) | |
group( 'SPI', spiPackages.asList() ) | |
group( 'Internal', internalPackages.asList() ) | |
group ( 'Testing Support', ['org.hibernate.testing*'] ) | |
// ugh, http://issues.gradle.org/browse/GRADLE-1563 | |
// tags ["todo:X"] | |
// work around: | |
addStringOption( "tag", "todo:X" ) | |
} | |
doLast { | |
copy { | |
from rootProject.file( 'shared/javadoc/images' ) | |
into new File( javadocDir, "/images" ) | |
} | |
} | |
} | |
buildDocs.dependsOn aggregateJavadocs | |
// jDocBook ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
jdocbook { | |
// shared 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 | |
devguide { | |
masterSourceDocumentName = 'Hibernate_Development_Guide.xml' | |
} | |
manual { | |
masterSourceDocumentName = 'HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.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 | |
} | |
} | |
[ 'devguide', 'manual'].each { bookName -> | |
task "stageLocalStyles_$bookName"(type: Copy) { | |
into project.file( "target/docbook/stage/$bookName" ) | |
from project.file( 'src/main/style' ) | |
includeEmptyDirs = false | |
} | |
tasks[ "stageStyles_$bookName" ].dependsOn "stageLocalStyles_$bookName" | |
} | |
// Topical Guides ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
task renderTopicalGuides(type: AsciidoctorTask, group: 'Documentation') { | |
description = 'Renders the Topical Guides in HTML format using Asciidoctor.' | |
sourceDir = file( 'src/main/asciidoc/topical' ) | |
outputDir = new File("$buildDir/asciidoc/topical/html") | |
options logDocuments: true | |
attributes icons: 'font', experimental: true, 'source-highlighter': 'prettify' | |
} | |
buildDocs.dependsOn renderTopicalGuides | |
// Getting Started Guides (quick starts) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
task renderGettingStartedGuides(type: AsciidoctorTask, group: 'Documentation') { | |
description = 'Renders the Getting Started Guides (quick starts) in HTML format using Asciidoctor.' | |
backends "html5" | |
sourceDir = file( 'src/main/asciidoc/quickstart/guides' ) | |
outputDir = new File("$buildDir/asciidoc/quickstart") | |
options logDocuments: true | |
attributes icons: 'font', experimental: true, 'source-highlighter': 'prettify' | |
} | |
buildDocs.dependsOn renderGettingStartedGuides | |
task buildTutorialZip(type: Zip) { | |
from 'src/main/asciidoc/quickstart/tutorials' | |
destinationDir = tasks.renderGettingStartedGuides.outputDir | |
archiveName = 'hibernate-tutorials.zip' | |
expand( | |
version: project.version, | |
slf4j: "1.7.5", | |
junit: parent.junitVersion, | |
h2: parent.h2Version | |
) | |
} | |
renderGettingStartedGuides.dependsOn buildTutorialZip | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Under
1.5.2
you can do