@@ -13,50 +13,158 @@ buildscript {
13
13
jcenter()
14
14
}
15
15
dependencies {
16
- // classpath "org.jboss.jdocbook:gradle-jdocbook:1.2.1"
17
- classpath " org.jboss.jdocbook:gradle-jdocbook:1.2.2-SNAPSHOT"
16
+ classpath " org.jboss.jdocbook:gradle-jdocbook:1.2.2"
18
17
classpath ' org.asciidoctor:asciidoctor-gradle-plugin:0.7.0'
19
18
}
20
19
}
21
20
22
21
apply plugin : " java"
23
22
apply plugin : " jdocbook"
23
+ apply from : " ../utilities.gradle"
24
24
25
- ext. pressgangVersion = ' 3.0.0'
25
+ defaultTasks ' buildDocs'
26
+
27
+ configurations {
28
+ asciidoclet {
29
+ description = ' Dependencies for Asciidoclet (the javadoc doclet tool for using Asciidoc)'
30
+ }
31
+ }
26
32
27
33
dependencies {
34
+ ext. pressgangVersion = ' 3.0.0'
35
+
36
+ asciidoclet ' org.asciidoctor:asciidoclet:0.+'
37
+
28
38
jdocbookXsl " org.jboss.pressgang:pressgang-xslt-ns:${ pressgangVersion} "
29
39
jdocbookXsl " org.jboss.pressgang:pressgang-fonts:${ pressgangVersion} "
30
40
jdocbookStyles " org.jboss.pressgang:pressgang-jdocbook-style:${ pressgangVersion} "
31
41
}
32
42
33
- defaultTasks ' buildDocs'
43
+
44
+ task buildDocs {
45
+ group ' Documentation'
46
+ description ' Grouping task for performing all documentation building tasks'
47
+ }
48
+
49
+
50
+
51
+ // aggregated JavaDoc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52
+
53
+ final File javadocDir = mkdir( new File ( (File ) project. buildDir, ' javadocs' ) );
54
+
55
+ /**
56
+ * Builds the JavaDocs aggregated (unified) across all the sub-projects
57
+ */
58
+ task aggregateJavadocs (type : Javadoc ) {
59
+ description = ' Builds the aggregated (unified) JavaDocs across all sub-projects'
60
+ options. docletpath = configurations. asciidoclet. files. asType(List )
61
+ options. doclet = ' org.asciidoctor.Asciidoclet'
62
+
63
+ final int copyrightYear = new GregorianCalendar (). get( Calendar . YEAR );
64
+
65
+ // exclude any generated sources (this is not working: http://forums.gradle.org/gradle/topics/excluding_generated_source_from_javadoc)
66
+ exclude " **/generated-src/**"
67
+
68
+ // process each project, building up:
69
+ // 1) appropriate sources
70
+ // 2) classpath
71
+ // 3) the package list for groups
72
+ Set<String > apiPackages = new HashSet<String > ()
73
+ Set<String > spiPackages = new HashSet<String > ()
74
+ Set<String > internalPackages = new HashSet<String > ()
75
+ parent. subprojects. each{ Project subProject ->
76
+ // skip certain sub-projects
77
+ if ( ! [' release' ,' documentation' ]. contains( subProject. name ) ) {
78
+ subProject. sourceSets. each { sourceSet ->
79
+ // skip certain source sets
80
+ if ( ! [' test' ,' matrix' ]. contains( sourceSet. name ) ) {
81
+ source sourceSet. java
82
+
83
+ if ( classpath ) {
84
+ classpath + = sourceSet. output + sourceSet. compileClasspath
85
+ }
86
+ else {
87
+ classpath = sourceSet. output + sourceSet. compileClasspath
88
+ }
89
+
90
+ sourceSet. java. each { javaFile ->
91
+ final String packageName = determinePackageName( sourceSet. java, javaFile );
92
+ if ( packageName. endsWith( " .internal" ) || packageName. contains( " .internal." ) ) {
93
+ internalPackages. add( packageName );
94
+ }
95
+ else if ( packageName. endsWith( " .spi" ) || packageName. contains( " .spi." ) ) {
96
+ spiPackages. add( packageName );
97
+ }
98
+ else if ( packageName. startsWith( " org.hibernate.testing" ) ) {
99
+ // do nothing as testing support is already handled...
100
+ }
101
+ else {
102
+ apiPackages. add( packageName );
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+
110
+ // apply standard config
111
+ maxMemory = ' 512m'
112
+ destinationDir = javadocDir
113
+ configure( options ) {
114
+ overview = rootProject. file( ' shared/javadoc/overview.html' )
115
+ stylesheetFile = rootProject. file( ' shared/javadoc/stylesheet.css' )
116
+ windowTitle = ' Hibernate JavaDocs'
117
+ docTitle = " Hibernate JavaDoc ($project . version )"
118
+ bottom = " Copyright © 2001-$copyrightYear <a href=\" http://redhat.com\" >Red Hat, Inc.</a> All Rights Reserved."
119
+ use = true
120
+ links = [ ' http://download.oracle.com/javase/6/docs/api/' , ' http://download.oracle.com/javaee/6/api/' ]
121
+ group( ' API' , apiPackages. asList() )
122
+ group( ' SPI' , spiPackages. asList() )
123
+ group( ' Internal' , internalPackages. asList() )
124
+ group ( ' Testing Support' , [' org.hibernate.testing*' ] )
125
+ // ugh, http://issues.gradle.org/browse/GRADLE-1563
126
+ // tags ["todo:X"]
127
+ // work around:
128
+ addStringOption( " tag" , " todo:X" )
129
+ }
130
+
131
+ doLast {
132
+ copy {
133
+ from rootProject. file( ' shared/javadoc/images' )
134
+ into new File ( javadocDir, " /images" )
135
+ }
136
+ }
137
+ }
138
+
139
+ buildDocs. dependsOn aggregateJavadocs
140
+
141
+
142
+ // jDocBook ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34
143
35
144
jdocbook {
36
- // apply shared formatting config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37
- format(' html_single' ) {
38
- finalName = " index.html"
39
- stylesheet = " classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl"
40
- }
41
-
42
- format(' html' ) {
43
- finalName = " index.html"
44
- stylesheet = " classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl"
45
- }
46
-
47
- // book-specific config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
- quickstart {
49
- masterSourceDocumentName = ' Hibernate_Getting_Started_Guide.xml'
50
- }
51
-
52
- devguide {
53
- masterSourceDocumentName = ' Hibernate_Development_Guide.xml'
54
- useRelativeImageUris = false
55
- }
145
+ // shared config
146
+ format(' html_single' ) {
147
+ finalName = " index.html"
148
+ stylesheet = " classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl"
149
+ }
150
+ format(' html' ) {
151
+ finalName = " index.html"
152
+ stylesheet = " classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl"
153
+ }
56
154
57
- manual {
58
- masterSourceDocumentName = ' HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml'
59
- }
155
+ // book-specific config
156
+ quickstart {
157
+ masterSourceDocumentName = ' Hibernate_Getting_Started_Guide.xml'
158
+ }
159
+
160
+ devguide {
161
+ masterSourceDocumentName = ' Hibernate_Development_Guide.xml'
162
+ useRelativeImageUris = false
163
+ }
164
+
165
+ manual {
166
+ masterSourceDocumentName = ' HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml'
167
+ }
60
168
}
61
169
62
170
// todo : make this part of gradle-jdocbook.
@@ -73,14 +181,12 @@ stageStyles_devguide.doLast {
73
181
}
74
182
75
183
[ ' devguide' , ' manual' , ' quickstart' ]. each { bookName ->
76
- tasks[ " stageStyles_$bookName " ]. doLast {
77
- logger. lifecycle( " Staging local style resources" )
78
- copy {
79
- into project. file( " target/docbook/stage/$bookName " )
80
- from project. file( ' src/main/style' )
81
- includeEmptyDirs = false
82
- }
83
- }
184
+ task " stageLocalStyles_$bookName " (type : Copy ) {
185
+ into project. file( " target/docbook/stage/$bookName " )
186
+ from project. file( ' src/main/style' )
187
+ includeEmptyDirs = false
188
+ }
189
+ tasks[ " stageStyles_$bookName " ]. dependsOn " stageLocalStyles_$bookName "
84
190
}
85
191
86
192
task buildTutorialZip (type : Zip ) {
@@ -117,27 +223,14 @@ File[] dirList(File dir) {
117
223
118
224
119
225
// asciidoctor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
226
+
120
227
task asciidoctor (type : org.asciidoctor.gradle.AsciidoctorTask , group : ' Documentation' ) {
121
228
description = ' Generates the Asciidoc(tor) topical guides in HTML format.'
122
229
backend = ' html5'
123
230
sourceDir = file( ' src/main/asciidoc/topical' )
124
231
outputDir = new File (" $buildDir /asciidoc/topical/html" )
125
232
}
126
233
127
- // task generateRegistryGuideHtml(type: org.asciidoctor.gradle.AsciidoctorTask, group: 'Documentation') {
128
- // description = 'Generates the ServiceRegistry topical guide in HTML format.'
129
- // backend = 'html5'
130
- // sourceDir = file( 'src/main/asciidoc/topical/registries' )
131
- // outputDir = new File("$buildDir/asciidoc/topical/html")
132
- // }
133
- //
134
- // task generateMetamodelgenGuideHtml(type: org.asciidoctor.gradle.AsciidoctorTask, group: 'Documentation') {
135
- // description = 'Generates the Metamodel Generator topical guide in HTML format.'
136
- // backend = 'html5'
137
- // sourceDir = file( 'src/main/asciidoc/topical/metamodelgen' )
138
- // outputDir = new File("$buildDir/asciidoc/topical/html")
139
- // }
140
-
141
234
tasks. withType(org.asciidoctor.gradle.AsciidoctorTask ) { docTask ->
142
235
options = [
143
236
logDocuments : true ,
@@ -149,8 +242,4 @@ tasks.withType(org.asciidoctor.gradle.AsciidoctorTask) { docTask ->
149
242
]
150
243
}
151
244
152
- // - aggregator
153
- // task asciidoctor(type: Task, group: 'Documentation')
154
- // asciidoctor.dependsOn generateRegistryGuideHtml, generateMetamodelgenGuideHtml
155
-
156
245
buildDocs. dependsOn asciidoctor
0 commit comments