improved aggregated javadoc generation
This commit is contained in:
parent
e422d913db
commit
7bc1d55cdd
|
@ -32,8 +32,6 @@ plugins {
|
||||||
id 'idea'
|
id 'idea'
|
||||||
id 'org.jetbrains.gradle.plugin.idea-ext' version '1.0'
|
id 'org.jetbrains.gradle.plugin.idea-ext' version '1.0'
|
||||||
id 'eclipse'
|
id 'eclipse'
|
||||||
|
|
||||||
id 'biz.aQute.bnd' version '5.1.1' apply false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
|
|
@ -11,27 +11,6 @@ plugins {
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
def projectsToIncludeInAggregatedJavadoc = [
|
|
||||||
':hibernate-core',
|
|
||||||
':hibernate-testing',
|
|
||||||
':hibernate-envers',
|
|
||||||
':hibernate-agroal',
|
|
||||||
':hibernate-c3p0',
|
|
||||||
':hibernate-graalvm',
|
|
||||||
':hibernate-hikaricp',
|
|
||||||
// ':hibernate-jcache',
|
|
||||||
':hibernate-micrometer',
|
|
||||||
':hibernate-proxool',
|
|
||||||
':hibernate-spatial',
|
|
||||||
':hibernate-vibur',
|
|
||||||
':hibernate-gradle-plugin',
|
|
||||||
':hibernate-enhance-maven-plugin',
|
|
||||||
':hibernate-jpamodelgen',
|
|
||||||
]
|
|
||||||
|
|
||||||
projectsToIncludeInAggregatedJavadoc.each {projectPath ->
|
|
||||||
evaluationDependsOn projectPath
|
|
||||||
}
|
|
||||||
|
|
||||||
apply from: rootProject.file( 'gradle/java-module.gradle' )
|
apply from: rootProject.file( 'gradle/java-module.gradle' )
|
||||||
apply plugin: 'org.hibernate.matrix-test'
|
apply plugin: 'org.hibernate.matrix-test'
|
||||||
|
@ -89,82 +68,6 @@ task buildDocsForPublishing {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
// 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 an aggregated JavaDoc across all ORM sub-projects'
|
|
||||||
|
|
||||||
final int currentYear = new GregorianCalendar().get( Calendar.YEAR )
|
|
||||||
|
|
||||||
// exclude any generated sources and internal packages
|
|
||||||
exclude( '**/generated-src/**' )
|
|
||||||
exclude( '**/internal/**' )
|
|
||||||
|
|
||||||
|
|
||||||
// apply standard config
|
|
||||||
maxMemory = '512m'
|
|
||||||
destinationDir = javadocDir
|
|
||||||
configure( options ) {
|
|
||||||
overview = 'src/main/javadoc/overview.html'
|
|
||||||
windowTitle = 'Hibernate JavaDocs'
|
|
||||||
docTitle = "Hibernate JavaDoc ($project.version)"
|
|
||||||
bottom = "Copyright © 2001-$currentYear <a href=\"https://redhat.com\">Red Hat, Inc.</a> All Rights Reserved."
|
|
||||||
use = true
|
|
||||||
options.encoding = 'UTF-8'
|
|
||||||
|
|
||||||
links = [
|
|
||||||
'https://docs.oracle.com/javase/8/docs/api/',
|
|
||||||
'https://docs.jboss.org/hibernate/beanvalidation/spec/2.0/api/',
|
|
||||||
'https://docs.jboss.org/cdi/api/2.0/',
|
|
||||||
'https://javaee.github.io/javaee-spec/javadocs/'
|
|
||||||
]
|
|
||||||
|
|
||||||
if ( gradle.ext.javaVersions.main.compiler.asInt() >= 11 ) {
|
|
||||||
//The need to set `--source 1.8` applies to all JVMs after 11, and also to 11
|
|
||||||
// but after excluding the first two builds; see also specific comments on
|
|
||||||
// https://bugs.openjdk.java.net/browse/JDK-8212233?focusedCommentId=14245762
|
|
||||||
// For now, let's be compatible with JDK 11.0.3+. We can improve on it if people
|
|
||||||
// complain they cannot build with JDK 11.0.0, 11.0.1 and 11.0.2.
|
|
||||||
logger.lifecycle "Forcing Javadoc in Java 8 compatible mode"
|
|
||||||
options.source = gradle.ext.baselineJavaVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
options.addStringOption( 'Xdoclint:none', '-quiet' )
|
|
||||||
|
|
||||||
if ( gradle.ext.javaToolchainEnabled ) {
|
|
||||||
options.setJFlags( getProperty( 'toolchain.javadoc.jvmargs' ).toString().
|
|
||||||
split( ' ' ).toList().findAll( { !it.isEmpty() } ) )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( gradle.ext.javaToolchainEnabled ) {
|
|
||||||
// Display version of Java tools
|
|
||||||
doFirst {
|
|
||||||
logger.lifecycle "Aggregating javadoc with '${javadocTool.get().metadata.installationPath}'"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// process each project, building up:
|
|
||||||
// 1) appropriate sources
|
|
||||||
// 2) classpath
|
|
||||||
projectsToIncludeInAggregatedJavadoc.each {projectPath ->
|
|
||||||
def includeProject = parent.project(projectPath)
|
|
||||||
|
|
||||||
// we only care about the main SourceSet...
|
|
||||||
source includeProject.sourceSets.main.java
|
|
||||||
classpath += ( includeProject.sourceSets.main.output + includeProject.sourceSets.main.compileClasspath )
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
asciidoctorj {
|
asciidoctorj {
|
||||||
attributes icons: 'font',
|
attributes icons: 'font',
|
||||||
experimental: true,
|
experimental: true,
|
||||||
|
@ -178,8 +81,10 @@ asciidoctorj {
|
||||||
|
|
||||||
// Topical Guides ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// Topical Guides ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
task renderTopicalGuides(type: AsciidoctorTask, group: 'Documentation') {
|
task renderTopicalGuides(type: AsciidoctorTask, group: 'Documentation') {task->
|
||||||
description = 'Renders the Topical Guides in HTML format using Asciidoctor.'
|
description = 'Renders the Topical Guides in HTML format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
|
||||||
sourceDir = file( 'src/main/asciidoc/topical' )
|
sourceDir = file( 'src/main/asciidoc/topical' )
|
||||||
outputDir = new File("$buildDir/asciidoc/topical/html_single")
|
outputDir = new File("$buildDir/asciidoc/topical/html_single")
|
||||||
|
@ -194,8 +99,10 @@ task renderTopicalGuides(type: AsciidoctorTask, group: 'Documentation') {
|
||||||
|
|
||||||
// Getting Started Guides (quick starts) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// Getting Started Guides (quick starts) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
task renderGettingStartedGuides(type: AsciidoctorTask, group: 'Documentation') {
|
task renderGettingStartedGuides(type: AsciidoctorTask, group: 'Documentation') {task->
|
||||||
description = 'Renders the Getting Started Guides (quick starts) in HTML format using Asciidoctor.'
|
description = 'Renders the Getting Started Guides (quick starts) in HTML format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
|
||||||
sourceDir = file( 'src/main/asciidoc/quickstart/guides' )
|
sourceDir = file( 'src/main/asciidoc/quickstart/guides' )
|
||||||
sources {
|
sources {
|
||||||
|
@ -205,7 +112,7 @@ task renderGettingStartedGuides(type: AsciidoctorTask, group: 'Documentation') {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
task buildTutorialZip(type: Zip) {
|
task buildTutorialZip(type: Zip) {task->
|
||||||
from 'src/main/asciidoc/quickstart/tutorials'
|
from 'src/main/asciidoc/quickstart/tutorials'
|
||||||
destinationDirectory = tasks.renderGettingStartedGuides.outputDir
|
destinationDirectory = tasks.renderGettingStartedGuides.outputDir
|
||||||
archiveBaseName = 'hibernate-tutorials.zip'
|
archiveBaseName = 'hibernate-tutorials.zip'
|
||||||
|
@ -215,14 +122,16 @@ task buildTutorialZip(type: Zip) {
|
||||||
junit: project.junitVersion,
|
junit: project.junitVersion,
|
||||||
h2: project.h2Version
|
h2: project.h2Version
|
||||||
)
|
)
|
||||||
|
tasks.renderGettingStartedGuides.dependsOn task
|
||||||
}
|
}
|
||||||
|
|
||||||
renderGettingStartedGuides.dependsOn buildTutorialZip
|
|
||||||
|
|
||||||
// User Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// User Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
task renderUserGuide(type: AsciidoctorTask, group: 'Documentation') {
|
task renderUserGuide(type: AsciidoctorTask, group: 'Documentation') {task->
|
||||||
description = 'Renders the User Guides in HTML format using Asciidoctor.'
|
description = 'Renders the User Guides in HTML format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
|
||||||
sourceDir = file( 'src/main/asciidoc/userguide' )
|
sourceDir = file( 'src/main/asciidoc/userguide' )
|
||||||
sources {
|
sources {
|
||||||
|
@ -253,8 +162,10 @@ task renderUserGuide(type: AsciidoctorTask, group: 'Documentation') {
|
||||||
|
|
||||||
// Integration Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// Integration Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
task renderIntegrationGuide(type: AsciidoctorTask, group: 'Documentation') {
|
task renderIntegrationGuide(type: AsciidoctorTask, group: 'Documentation') {task->
|
||||||
description = 'Renders the User Guides in HTML format using Asciidoctor.'
|
description = 'Renders the User Guides in HTML format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
|
||||||
sourceDir = file( 'src/main/asciidoc/integrationguide' )
|
sourceDir = file( 'src/main/asciidoc/integrationguide' )
|
||||||
sources {
|
sources {
|
||||||
|
@ -303,13 +214,11 @@ sourceSets.test.resources {
|
||||||
// grouping tasks
|
// grouping tasks
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
buildDocs.dependsOn aggregateJavadocs
|
|
||||||
buildDocs.dependsOn renderTopicalGuides
|
buildDocs.dependsOn renderTopicalGuides
|
||||||
buildDocs.dependsOn renderGettingStartedGuides
|
buildDocs.dependsOn renderGettingStartedGuides
|
||||||
buildDocs.dependsOn renderUserGuide
|
buildDocs.dependsOn renderUserGuide
|
||||||
buildDocs.dependsOn renderIntegrationGuide
|
buildDocs.dependsOn renderIntegrationGuide
|
||||||
|
|
||||||
buildDocsForPublishing.dependsOn aggregateJavadocs
|
|
||||||
buildDocsForPublishing.dependsOn renderTopicalGuides
|
buildDocsForPublishing.dependsOn renderTopicalGuides
|
||||||
buildDocsForPublishing.dependsOn renderGettingStartedGuides
|
buildDocsForPublishing.dependsOn renderGettingStartedGuides
|
||||||
buildDocsForPublishing.dependsOn renderUserGuide
|
buildDocsForPublishing.dependsOn renderUserGuide
|
||||||
|
|
|
@ -26,7 +26,6 @@ apply from: rootProject.file( 'gradle/databases.gradle' )
|
||||||
|
|
||||||
apply plugin: 'java-library'
|
apply plugin: 'java-library'
|
||||||
apply plugin: 'org.hibernate.orm.database-service'
|
apply plugin: 'org.hibernate.orm.database-service'
|
||||||
apply plugin: 'biz.aQute.bnd.builder'
|
|
||||||
|
|
||||||
apply plugin: 'checkstyle'
|
apply plugin: 'checkstyle'
|
||||||
apply plugin: 'build-dashboard'
|
apply plugin: 'build-dashboard'
|
||||||
|
|
|
@ -10,6 +10,20 @@ apply plugin : 'java'
|
||||||
|
|
||||||
apply from: rootProject.file( 'gradle/base-information.gradle' )
|
apply from: rootProject.file( 'gradle/base-information.gradle' )
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
javadocSources {
|
||||||
|
canBeConsumed = true
|
||||||
|
canBeResolved = false
|
||||||
|
description = 'Configuration for accessing the sources that should be included in the javadoc for the project'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
sourceSets.main.allJava.srcDirs.each { srcDir ->
|
||||||
|
javadocSources srcDir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
javadoc {
|
javadoc {
|
||||||
exclude( "**/internal/*" )
|
exclude( "**/internal/*" )
|
||||||
exclude( "**/generated-src/**" )
|
exclude( "**/generated-src/**" )
|
||||||
|
@ -77,4 +91,4 @@ task javadocJar(type: Jar) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
archiveClassifier.set( 'javadoc' )
|
archiveClassifier.set( 'javadoc' )
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@ ext {
|
||||||
jboss_tx_spi_jakarta: "org.jboss:jboss-transaction-spi-jakarta:7.6.1.Final",
|
jboss_tx_spi_jakarta: "org.jboss:jboss-transaction-spi-jakarta:7.6.1.Final",
|
||||||
jakarta_validator: "org.hibernate.validator:hibernate-validator:${hibernateValidatorJakartaVersion}",
|
jakarta_validator: "org.hibernate.validator:hibernate-validator:${hibernateValidatorJakartaVersion}",
|
||||||
jakarta_el: 'org.glassfish:jakarta.el:4.0.1',
|
jakarta_el: 'org.glassfish:jakarta.el:4.0.1',
|
||||||
|
jakarta_inject: 'jakarta.inject:jakarta.inject-api:2.0.0',
|
||||||
|
|
||||||
// javax
|
// javax
|
||||||
jpa: "javax.persistence:javax.persistence-api:${project.jpaVersion}",
|
jpa: "javax.persistence:javax.persistence-api:${project.jpaVersion}",
|
||||||
|
|
|
@ -21,23 +21,24 @@ configurations {
|
||||||
tests {
|
tests {
|
||||||
description = 'Configuration for the produced test jar'
|
description = 'Configuration for the produced test jar'
|
||||||
}
|
}
|
||||||
|
implementation {
|
||||||
|
extendsFrom antlr
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api libraries.jakarta_jpa
|
api libraries.jakarta_jpa
|
||||||
api libraries.jakarta_jta
|
api libraries.jakarta_jta
|
||||||
api libraries.jakarta_activation
|
|
||||||
api libraries.jakarta_jaxb_api
|
|
||||||
api libraries.jakarta_jaxb_runtime
|
|
||||||
api libraries.jandex
|
api libraries.jandex
|
||||||
api libraries.classmate
|
api libraries.classmate
|
||||||
api libraries.commons_annotations
|
api libraries.commons_annotations
|
||||||
|
|
||||||
implementation libraries.byteBuddy
|
implementation libraries.byteBuddy
|
||||||
implementation libraries.activation
|
implementation libraries.jakarta_activation
|
||||||
implementation libraries.jaxb_runtime
|
implementation libraries.jakarta_jaxb_api
|
||||||
implementation libraries.antlr
|
implementation libraries.jakarta_jaxb_runtime
|
||||||
|
implementation libraries.jakarta_inject
|
||||||
|
|
||||||
compileOnly libraries.jakarta_jacc
|
compileOnly libraries.jakarta_jacc
|
||||||
compileOnly libraries.jakarta_validation
|
compileOnly libraries.jakarta_validation
|
||||||
|
@ -56,21 +57,14 @@ dependencies {
|
||||||
// for test runtime
|
// for test runtime
|
||||||
transitive = true
|
transitive = true
|
||||||
}
|
}
|
||||||
|
testImplementation libraries.jakarta_cdi
|
||||||
testImplementation libraries.mockito
|
testImplementation libraries.mockito
|
||||||
testImplementation libraries.mockito_inline
|
testImplementation libraries.mockito_inline
|
||||||
testImplementation libraries.jodaTime
|
testImplementation libraries.jodaTime
|
||||||
testImplementation libraries.assertj
|
testImplementation libraries.assertj
|
||||||
testImplementation libraries.jakarta_cdi
|
|
||||||
// testImplementation libraries.jboss_ejb_spec_jar
|
|
||||||
// testImplementation libraries.jboss_annotation_spec_jar
|
|
||||||
|
|
||||||
// testRuntimeOnly "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final"
|
|
||||||
testRuntimeOnly libraries.jakarta_el
|
|
||||||
// testRuntimeOnly 'jaxen:jaxen:1.1'
|
|
||||||
testRuntimeOnly libraries.byteBuddy
|
testRuntimeOnly libraries.byteBuddy
|
||||||
testRuntimeOnly libraries.jakarta_weld
|
testRuntimeOnly libraries.jakarta_weld
|
||||||
// testRuntimeOnly libraries.atomikos
|
|
||||||
// testRuntimeOnly libraries.atomikos_jta
|
|
||||||
testRuntimeOnly libraries.wildfly_transaction_client
|
testRuntimeOnly libraries.wildfly_transaction_client
|
||||||
|
|
||||||
testAnnotationProcessor project( ':hibernate-jpamodelgen' )
|
testAnnotationProcessor project( ':hibernate-jpamodelgen' )
|
||||||
|
@ -85,53 +79,7 @@ dependencies {
|
||||||
jar {
|
jar {
|
||||||
manifest {
|
manifest {
|
||||||
attributes(
|
attributes(
|
||||||
'Main-Class': 'org.hibernate.Version',
|
'Main-Class': 'org.hibernate.Version'
|
||||||
|
|
||||||
// // BND Plugin instructions (for OSGi):
|
|
||||||
// 'Import-Package': [
|
|
||||||
// 'javax.security.auth;resolution:=optional',
|
|
||||||
// // Make javax.security.jacc optional and do not reference a version range (because that's what we used to do)
|
|
||||||
// 'javax.security.jacc;resolution:=optional;version=!',
|
|
||||||
// // Make javax.validation optional and do not reference a version range (because that's what we used to do)
|
|
||||||
// 'javax.validation;resolution:=optional;version=!',
|
|
||||||
// 'javax.validation.constraints;resolution:=optional;version=!',
|
|
||||||
// 'javax.validation.groups;resolution:=optional;version=!',
|
|
||||||
// 'javax.validation.metadata;resolution:=optional;version=!',
|
|
||||||
// // Make javax.enterprise optional and do not reference a version range (because that's what we used to do)
|
|
||||||
// '!javax.enterprise*',
|
|
||||||
// 'javax.enterprise.context.spi;resolution:=optional;version=!',
|
|
||||||
// 'javax.enterprise.inject.spi;resolution:=optional;version=!',
|
|
||||||
// // For JPA, we don't want to target the automatically generated range, but a specific version
|
|
||||||
// "javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
|
|
||||||
// // optionals
|
|
||||||
// 'jakarta.persistence.spi;resolution:=optional',
|
|
||||||
// 'javax.management;resolution:=optional',
|
|
||||||
// 'javax.naming.event;resolution:=optional',
|
|
||||||
// 'javax.naming.spi;resolution:=optional',
|
|
||||||
// 'org.apache.tools.ant;resolution:=optional',
|
|
||||||
// 'org.apache.tools.ant.taskdefs;resolution:=optional',
|
|
||||||
// 'org.apache.tools.ant.types;resolution:=optional',
|
|
||||||
// 'javax.inject;resolution:=optional',
|
|
||||||
// 'net.bytebuddy.*;resolution:=optional',
|
|
||||||
// 'org.objectweb.jonas_tm;resolution:=optional',
|
|
||||||
// 'com.ibm.websphere.jtaextensions;resolution:=optional',
|
|
||||||
// // We must specify the version explicitly to allow Karaf
|
|
||||||
// // to use an older version of JAXB (the only one we can use in Karaf)
|
|
||||||
// "javax.xml.bind.*;version=\"${project.jaxbApiVersionOsgiRange}\"",
|
|
||||||
// // Temporarily support JTA 1.1 -- Karaf and other frameworks still
|
|
||||||
// // use it. Without this, the plugin generates [1.2,2).
|
|
||||||
// 'javax.transaction;version="[1.1,2)"',
|
|
||||||
// // Also import every package referenced in the code
|
|
||||||
// '*'
|
|
||||||
// ].join( ',' ),
|
|
||||||
'-exportcontents': [
|
|
||||||
// Legacy resource packages containing XSDs that were traditionally not exported
|
|
||||||
"!org.hibernate.xsd.cfg",
|
|
||||||
"!org.hibernate.xsd.mapping",
|
|
||||||
// TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer uses ClassLoaderServiceImpl.
|
|
||||||
//'org.hibernate.boot.registry.classloading.internal',
|
|
||||||
"*;version=${project.version}"
|
|
||||||
].join( ',' ),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import java.nio.charset.StandardCharsets
|
import java.nio.charset.StandardCharsets
|
||||||
|
import java.util.function.Function
|
||||||
|
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
|
||||||
|
@ -9,20 +10,18 @@ import groovy.json.JsonSlurper
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
*/
|
*/
|
||||||
apply from: rootProject.file( 'gradle/base-information.gradle' )
|
apply from: rootProject.file( 'gradle/base-information.gradle' )
|
||||||
|
apply from: rootProject.file( 'gradle/libraries.gradle' )
|
||||||
|
|
||||||
apply plugin: 'idea'
|
apply plugin: 'idea'
|
||||||
apply plugin: 'distribution'
|
apply plugin: 'distribution'
|
||||||
//apply plugin: 'java-library-distribution'
|
|
||||||
|
|
||||||
|
|
||||||
idea.module {
|
idea.module {
|
||||||
}
|
}
|
||||||
|
|
||||||
//def documentationDir = project.layout.buildDirectory.dir('documentation')
|
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
core
|
core
|
||||||
// testing
|
|
||||||
|
testing
|
||||||
|
|
||||||
envers
|
envers
|
||||||
spatial
|
spatial
|
||||||
|
@ -36,21 +35,218 @@ configurations {
|
||||||
jcache
|
jcache
|
||||||
|
|
||||||
jpamodelgen
|
jpamodelgen
|
||||||
|
|
||||||
|
javadocClasspath {
|
||||||
|
description = 'Class files for the javadoc to be built'
|
||||||
|
resolutionStrategy.capabilitiesResolution.withCapability('org.junit.jupiter:junit-jupiter-params:5.7.1') { details ->
|
||||||
|
details.select( details.candidates.first() ).because( 'first' )
|
||||||
|
}
|
||||||
|
|
||||||
|
extendsFrom core
|
||||||
|
extendsFrom testing
|
||||||
|
extendsFrom envers
|
||||||
|
extendsFrom spatial
|
||||||
|
extendsFrom agroal
|
||||||
|
extendsFrom c3p0
|
||||||
|
extendsFrom hikaricp
|
||||||
|
extendsFrom proxool
|
||||||
|
extendsFrom vibur
|
||||||
|
extendsFrom jcache
|
||||||
|
extendsFrom jpamodelgen
|
||||||
|
}
|
||||||
|
|
||||||
|
javadocSources {
|
||||||
|
description = 'Source files to be built by the javadoc tool'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
attributesSchema { schema ->
|
||||||
|
schema.attribute(Bundling.BUNDLING_ATTRIBUTE) { matchStrategy ->
|
||||||
|
final def nameComparator = Comparator.comparing(
|
||||||
|
new Function<Bundling,String>() {
|
||||||
|
@Override
|
||||||
|
String apply(Bundling o) {
|
||||||
|
return o.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
matchStrategy.ordered(new Comparator<Bundling>() {
|
||||||
|
@Override
|
||||||
|
int compare(Bundling o1, Bundling o2) {
|
||||||
|
if ( Objects.equals( o1, o2 ) ) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( o1 == null ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( o2 == null ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( o1.name == Bundling.EMBEDDED ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( o2.name == Bundling.EMBEDDED ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nameComparator.compare(o1,o2)
|
||||||
|
}
|
||||||
|
} )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
core project( ':hibernate-core' )
|
core project( ':hibernate-core' )
|
||||||
// testing project( ':hibernate-testing' )
|
javadocSources project( path: ':hibernate-core', configuration: 'javadocSources' )
|
||||||
|
|
||||||
|
testing project( ':hibernate-testing' )
|
||||||
|
javadocSources project( path: ':hibernate-testing', configuration: 'javadocSources' )
|
||||||
|
|
||||||
envers project( ':hibernate-envers' )
|
envers project( ':hibernate-envers' )
|
||||||
|
javadocSources project( path: ':hibernate-envers', configuration: 'javadocSources' )
|
||||||
|
|
||||||
spatial project( ':hibernate-spatial' )
|
spatial project( ':hibernate-spatial' )
|
||||||
|
javadocSources project( path: ':hibernate-spatial', configuration: 'javadocSources' )
|
||||||
|
|
||||||
agroal project( ':hibernate-agroal' )
|
agroal project( ':hibernate-agroal' )
|
||||||
|
javadocSources project( path: ':hibernate-agroal', configuration: 'javadocSources' )
|
||||||
|
|
||||||
c3p0 project( ':hibernate-c3p0' )
|
c3p0 project( ':hibernate-c3p0' )
|
||||||
|
javadocSources project( path: ':hibernate-c3p0', configuration: 'javadocSources' )
|
||||||
|
|
||||||
hikaricp project( ':hibernate-hikaricp' )
|
hikaricp project( ':hibernate-hikaricp' )
|
||||||
|
javadocSources project( path: ':hibernate-hikaricp', configuration: 'javadocSources' )
|
||||||
|
|
||||||
proxool project( ':hibernate-proxool' )
|
proxool project( ':hibernate-proxool' )
|
||||||
|
javadocSources project( path: ':hibernate-proxool', configuration: 'javadocSources' )
|
||||||
|
|
||||||
vibur project( ':hibernate-vibur' )
|
vibur project( ':hibernate-vibur' )
|
||||||
|
javadocSources project( path: ':hibernate-vibur', configuration: 'javadocSources' )
|
||||||
|
|
||||||
// jcache project( ':hibernate-jcache' )
|
// jcache project( ':hibernate-jcache' )
|
||||||
|
// javadocSources project( path: ':hibernate-jcache', configuration: 'javadocSources' )
|
||||||
|
|
||||||
jpamodelgen project( ':hibernate-jpamodelgen' )
|
jpamodelgen project( ':hibernate-jpamodelgen' )
|
||||||
|
javadocSources project( path: ':hibernate-jpamodelgen', configuration: 'javadocSources' )
|
||||||
|
|
||||||
|
javadocClasspath libraries.logging_annotations
|
||||||
|
javadocClasspath libraries.jakarta_validation
|
||||||
|
javadocClasspath libraries.jakarta_cdi
|
||||||
|
javadocClasspath libraries.jakarta_jacc
|
||||||
|
javadocClasspath libraries.ant
|
||||||
|
javadocClasspath gradleApi()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// aggregated JavaDoc
|
||||||
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
final File javadocDir = mkdir( new File( (File) project.buildDir, 'documentation/javadocs' ) );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the JavaDocs aggregated (unified) across all the sub-projects
|
||||||
|
*/
|
||||||
|
task aggregateJavadocs(type: Javadoc) {
|
||||||
|
description = 'Builds an aggregated JavaDoc across all ORM sub-projects'
|
||||||
|
|
||||||
|
final int currentYear = new GregorianCalendar().get( Calendar.YEAR )
|
||||||
|
|
||||||
|
source configurations.javadocSources
|
||||||
|
classpath += configurations.javadocClasspath
|
||||||
|
|
||||||
|
// exclude any generated sources and internal packages
|
||||||
|
exclude '**/generated-src/**'
|
||||||
|
exclude '**/internal/**'
|
||||||
|
include '**/*.java'
|
||||||
|
|
||||||
|
// apply standard config
|
||||||
|
maxMemory = '512m'
|
||||||
|
destinationDir = javadocDir
|
||||||
|
configure( options ) {
|
||||||
|
overview = 'src/release/javadoc/overview.html'
|
||||||
|
windowTitle = 'Hibernate JavaDocs'
|
||||||
|
docTitle = "Hibernate JavaDoc ($project.version)"
|
||||||
|
bottom = "Copyright © 2001-$currentYear <a href=\"https://redhat.com\">Red Hat, Inc.</a> All Rights Reserved."
|
||||||
|
use = true
|
||||||
|
options.encoding = 'UTF-8'
|
||||||
|
|
||||||
|
links = [
|
||||||
|
'https://docs.oracle.com/javase/8/docs/api/',
|
||||||
|
'https://docs.jboss.org/hibernate/beanvalidation/spec/2.0/api/',
|
||||||
|
'https://docs.jboss.org/cdi/api/2.0/',
|
||||||
|
'https://javaee.github.io/javaee-spec/javadocs/'
|
||||||
|
]
|
||||||
|
|
||||||
|
if ( gradle.ext.javaVersions.main.compiler.asInt() >= 11 ) {
|
||||||
|
//The need to set `--source 1.8` applies to all JVMs after 11, and also to 11
|
||||||
|
// but after excluding the first two builds; see also specific comments on
|
||||||
|
// https://bugs.openjdk.java.net/browse/JDK-8212233?focusedCommentId=14245762
|
||||||
|
// For now, let's be compatible with JDK 11.0.3+. We can improve on it if people
|
||||||
|
// complain they cannot build with JDK 11.0.0, 11.0.1 and 11.0.2.
|
||||||
|
logger.lifecycle "Forcing Javadoc in Java 8 compatible mode"
|
||||||
|
options.source = gradle.ext.baselineJavaVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
options.addStringOption( 'Xdoclint:none', '-quiet' )
|
||||||
|
|
||||||
|
if ( gradle.ext.javaToolchainEnabled ) {
|
||||||
|
options.setJFlags( getProperty( 'toolchain.javadoc.jvmargs' ).toString().
|
||||||
|
split( ' ' ).toList().findAll( { !it.isEmpty() } ) )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( gradle.ext.javaToolchainEnabled ) {
|
||||||
|
// Display version of Java tools
|
||||||
|
doFirst {
|
||||||
|
logger.lifecycle "Aggregating javadoc with '${javadocTool.get().metadata.installationPath}'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task stageIntegrationGuide(type: Copy) {
|
||||||
|
group 'Release'
|
||||||
|
|
||||||
|
dependsOn ':documentation:buildDocsForPublishing'
|
||||||
|
|
||||||
|
from "${project( ':documentation' ).buildDir}/asciidoc/integrationguide"
|
||||||
|
into "${buildDir}/documentation/integrationguide"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task stageQuickstart(type: Copy) {
|
||||||
|
group 'Release'
|
||||||
|
|
||||||
|
dependsOn ':documentation:buildDocsForPublishing'
|
||||||
|
|
||||||
|
from "${project( ':documentation' ).buildDir}/asciidoc/quickstart"
|
||||||
|
into "${buildDir}/documentation/quickstart"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task stageTopicalGuide(type: Copy) {
|
||||||
|
group 'Release'
|
||||||
|
|
||||||
|
dependsOn ':documentation:buildDocsForPublishing'
|
||||||
|
|
||||||
|
from "${project( ':documentation' ).buildDir}/asciidoc/topical"
|
||||||
|
into "${buildDir}/documentation/topical"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task stageUserGuide(type: Copy) {
|
||||||
|
group 'Release'
|
||||||
|
|
||||||
|
dependsOn ':documentation:buildDocsForPublishing'
|
||||||
|
|
||||||
|
from "${project( ':documentation' ).buildDir}/asciidoc/userguide"
|
||||||
|
into "${buildDir}/documentation/userguide"
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -58,35 +254,16 @@ dependencies {
|
||||||
*
|
*
|
||||||
* Depends on building the docs
|
* Depends on building the docs
|
||||||
*/
|
*/
|
||||||
task assembleDocumentation(type: Copy) {
|
task assembleDocumentation {
|
||||||
group 'Release'
|
group 'Release'
|
||||||
description 'Assembles all documentation into the {buildDir}/documentation directory'
|
description 'Assembles all documentation into the {buildDir}/documentation directory'
|
||||||
|
|
||||||
dependsOn ':documentation:buildDocsForPublishing'
|
dependsOn ':documentation:buildDocsForPublishing'
|
||||||
|
dependsOn tasks.aggregateJavadocs
|
||||||
// copy documentation outputs into target/documentation.
|
dependsOn tasks.stageIntegrationGuide
|
||||||
// * this is used in building the dist bundles
|
dependsOn tasks.stageTopicalGuide
|
||||||
// * it is also used as a base to build a staged directory for documentation upload
|
dependsOn tasks.stageQuickstart
|
||||||
|
dependsOn tasks.stageUserGuide
|
||||||
// Integrations Guide
|
|
||||||
from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/integrationguide"
|
|
||||||
into "${buildDir}/documentation/integrationguide"
|
|
||||||
|
|
||||||
// Getting-started Guide
|
|
||||||
from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/quickstart"
|
|
||||||
into "${buildDir}/documentation/quickstart"
|
|
||||||
|
|
||||||
// Topical Guide
|
|
||||||
from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/topical"
|
|
||||||
into "${buildDir}/documentation/topical"
|
|
||||||
|
|
||||||
// User Guide
|
|
||||||
from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/userguide"
|
|
||||||
into "${buildDir}/documentation/userguide"
|
|
||||||
|
|
||||||
// Aggregated JavaDoc
|
|
||||||
from "${rootProject.project( 'documentation' ).buildDir}/javadocs"
|
|
||||||
into "${buildDir}/documentation/javadocs"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//task assembleProjectTemplates(type:Copy, dependsOn: project( ":project-template" ).tasks.assembleDist) {
|
//task assembleProjectTemplates(type:Copy, dependsOn: project( ":project-template" ).tasks.assembleDist) {
|
||||||
|
|
|
@ -28,7 +28,7 @@ dependencies {
|
||||||
implementation libraries.byteBuddy
|
implementation libraries.byteBuddy
|
||||||
implementation gradleApi()
|
implementation gradleApi()
|
||||||
// for Gradle
|
// for Gradle
|
||||||
implementation 'jakarta.inject:jakarta.inject-api:2.0.0'
|
implementation libraries.jakarta_inject
|
||||||
implementation localGroovy()
|
implementation localGroovy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue