357 lines
18 KiB
Groovy
357 lines
18 KiB
Groovy
/*
|
|
* 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>.
|
|
*/
|
|
|
|
pluginManagement {
|
|
repositories {
|
|
gradlePluginPortal()
|
|
maven {
|
|
name = 'localPluginRepository'
|
|
url = uri( "${gradle.gradleUserHomeDir}/tmp/plugins" )
|
|
}
|
|
}
|
|
|
|
includeBuild 'local-build-plugins'
|
|
}
|
|
|
|
plugins {
|
|
id 'org.hibernate.orm.build.env-settings'
|
|
id 'com.gradle.enterprise' version '3.11.1'
|
|
id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.8.1'
|
|
}
|
|
|
|
// version catalog support
|
|
// - https://docs.gradle.org/7.3.3/userguide/platforms.html#sub:central-declaration-of-dependencies
|
|
enableFeaturePreview("VERSION_CATALOGS")
|
|
|
|
|
|
dependencyResolutionManagement {
|
|
repositories {
|
|
mavenCentral()
|
|
// Needed for the RC versions of Jakarta Persistence
|
|
maven {
|
|
url "https://jakarta.oss.sonatype.org/content/repositories/releases/"
|
|
}
|
|
// Needed for the SNAPSHOT versions of Jakarta Persistence
|
|
maven {
|
|
url "https://jakarta.oss.sonatype.org/content/repositories/snapshots/"
|
|
}
|
|
|
|
//Allow loading additional dependencies from a local path;
|
|
//useful to load JDBC drivers which can not be distributed in public.
|
|
if (System.env['ADDITIONAL_REPO'] != null) {
|
|
flatDir {
|
|
dirs "${System.env.ADDITIONAL_REPO}"
|
|
}
|
|
}
|
|
}
|
|
|
|
pluginManagement {
|
|
repositories {
|
|
gradlePluginPortal()
|
|
}
|
|
}
|
|
|
|
versionCatalogs {
|
|
libs {
|
|
version( "antlr", "4.10.1" )
|
|
version( "hcann", "6.0.5.Final" )
|
|
version( "geolatte", "1.8.2" )
|
|
version( "byteBuddy", "1.12.18" )
|
|
version( "agroal", "2.0" )
|
|
version( "c3po", "0.9.5.5" )
|
|
version( "hikaricp", "3.2.0" )
|
|
version( "proxool", "0.8.3" )
|
|
version( "vibur", "25.0" )
|
|
version( "micrometer", "1.10.3" )
|
|
|
|
alias( "antlr" ).to( "org.antlr", "antlr4" ).versionRef( "antlr")
|
|
alias( "antlrRuntime" ).to( "org.antlr", "antlr4-runtime" ).versionRef( "antlr")
|
|
|
|
alias( "byteBuddy" ).to( "net.bytebuddy", "byte-buddy" ).versionRef( "byteBuddy" )
|
|
alias( "byteBuddyAgent" ).to( "net.bytebuddy", "byte-buddy-agent" ).versionRef( "byteBuddy" )
|
|
|
|
alias( "logging" ).to ( "org.jboss.logging", "jboss-logging" ).version( "3.5.0.Final" )
|
|
alias( "loggingAnnotations" ).to ( "org.jboss.logging", "jboss-logging-annotations" ).version( "2.2.1.Final" )
|
|
alias( "loggingProcessor" ).to ( "org.jboss.logging", "jboss-logging-processor" ).version( "2.2.1.Final" )
|
|
|
|
alias( "hcann" ).to( "org.hibernate.common", "hibernate-commons-annotations" ).versionRef( "hcann" )
|
|
alias( "jandex" ).to("io.smallrye", "jandex" ).version( "3.0.5" )
|
|
alias( "classmate" ).to( "com.fasterxml", "classmate" ).version( "1.5.1" )
|
|
|
|
alias( "jackson" ).to ( "com.fasterxml.jackson.core", "jackson-databind" ).version( "2.14.1" )
|
|
alias( "jacksonXml" ).to ( "com.fasterxml.jackson.dataformat", "jackson-dataformat-xml" ).version( "2.14.1" )
|
|
alias( "validator" ).to( "org.hibernate.validator", "hibernate-validator" ).version( "7.0.4.Final" )
|
|
|
|
alias( "ant" ).to( "org.apache.ant", "ant" ).version( "1.8.2" )
|
|
|
|
alias( "geolatte" ).to( "org.geolatte", "geolatte-geom" ).versionRef( "geolatte" )
|
|
|
|
alias( "jcache" ).to( "javax.cache", "cache-api" ).version( "1.0.0" )
|
|
alias( "ehcache3" ).to( "org.ehcache:ehcache:3.10.0-alpha0" )
|
|
|
|
alias( "agroal" ).to( "io.agroal", "agroal-api" ).versionRef( "agroal" )
|
|
alias( "agroalPool" ).to( "io.agroal", "agroal-pool" ).versionRef( "agroal" )
|
|
alias( "c3p0" ).to( "com.mchange", "c3p0" ).versionRef( "c3po" )
|
|
alias( "hikaricp" ).to( "com.zaxxer", "HikariCP" ).versionRef( "hikaricp" )
|
|
alias( "proxool" ).to( "proxool", "proxool" ).versionRef( "proxool" )
|
|
alias( "vibur" ).to( "org.vibur", "vibur-dbcp" ).versionRef( "vibur" )
|
|
|
|
alias( "micrometer" ).to ( "io.micrometer", "micrometer-core" ).versionRef( "micrometer" )
|
|
}
|
|
jakartaLibs {
|
|
version( "jaxbRuntime", "4.0.1" )
|
|
version( "jsonbRuntime", "3.0.2" )
|
|
|
|
// `jakartaJpaVersion` comes from the local-build-plugins to allow for command-line overriding of the JPA version to use
|
|
alias( "jpa" ).to( "jakarta.persistence", "jakarta.persistence-api" ).version( "${jakartaJpaVersion}" )
|
|
alias( "jta" ).to( "jakarta.transaction", "jakarta.transaction-api" ).version( "2.0.1")
|
|
alias( "validation" ).to( "jakarta.validation", "jakarta.validation-api" ).version( "3.0.0" )
|
|
alias( "jacc" ).to( "jakarta.authorization", "jakarta.authorization-api" ).version( "2.1.0" )
|
|
alias( "cdi" ).to( "jakarta.enterprise", "jakarta.enterprise.cdi-api" ).version( "4.0.0" )
|
|
alias( "interceptors" ).to( "jakarta.interceptor", "jakarta.interceptor-api" ).version( "2.1.0" )
|
|
alias( "jsonbApi" ).to( "jakarta.json.bind", "jakarta.json.bind-api" ).version( "3.0.0" )
|
|
alias( "jsonb" ).to( "org.eclipse", "yasson" ).versionRef( "jsonbRuntime" )
|
|
alias( "inject" ).to( "jakarta.inject", "jakarta.inject-api" ).version( "2.0.0" )
|
|
alias( "jaxbApi" ).to( "jakarta.xml.bind", "jakarta.xml.bind-api" ).version( "4.0.0" )
|
|
alias( "jaxb" ).to( "org.glassfish.jaxb", "jaxb-runtime" ).versionRef( "jaxbRuntime" )
|
|
alias( "xjc" ).to( "org.glassfish.jaxb", "jaxb-xjc" ).versionRef( "jaxbRuntime" )
|
|
alias( "el" ).to( "org.glassfish.expressly", "expressly" ).version( "5.0.0-M2" )
|
|
}
|
|
testLibs {
|
|
version( "junit4", "4.13.2" )
|
|
version( "junit5", "5.8.2" )
|
|
version( "assertj", "3.14.0" )
|
|
version( "mockito", "5.0.0" )
|
|
version( "byteman", "4.0.20" ) //Compatible with JDK20
|
|
version( "shrinkwrap", "1.2.6" )
|
|
version( "shrinkwrapDescriptors", "2.0.0" )
|
|
|
|
alias( "junit5Api" ).to( "org.junit.jupiter", "junit-jupiter-api" ).versionRef( "junit5" )
|
|
alias( "junit5Engine" ).to( "org.junit.jupiter", "junit-jupiter-engine" ).versionRef( "junit5" )
|
|
alias( "junit5Params" ).to( "org.junit.jupiter", "junit-jupiter-params" ).versionRef( "junit5" )
|
|
alias( "junit4Engine" ).to( "org.junit.vintage", "junit-vintage-engine" ).versionRef( "junit5" )
|
|
alias( "junit4" ).to( "junit", "junit" ).versionRef( "junit4" )
|
|
|
|
alias( "assertjCore" ).to( "org.assertj", "assertj-core" ).versionRef( "assertj" )
|
|
alias( "assertjApi" ).to( "org.assertj", "assertj-core-api" ).versionRef( "assertj" )
|
|
|
|
alias( "mockito" ).to( "org.mockito", "mockito-core" ).versionRef( "mockito" )
|
|
alias( "mockitoInline" ).to( "org.mockito", "mockito-inline" ).versionRef( "mockito" )
|
|
|
|
alias( "log4j2" ).to( "org.apache.logging.log4j", "log4j-core" ).version( "2.17.1" )
|
|
|
|
alias( "byteman" ).to ( "org.jboss.byteman", "byteman" ).versionRef("byteman" )
|
|
alias( "bytemanInstall" ).to ( "org.jboss.byteman", "byteman-install" ).versionRef("byteman" )
|
|
alias( "bytemanBmunit" ).to ( "org.jboss.byteman", "byteman-bmunit" ).versionRef("byteman" )
|
|
|
|
alias( "xapool" ).to( "com.experlog", "xapool" ).version( "1.5.0" )
|
|
|
|
alias( "shrinkwrap" ).to( "org.jboss.shrinkwrap", "shrinkwrap-impl-base" ).versionRef( "shrinkwrap" )
|
|
alias( "shrinkwrapApi" ).to( "org.jboss.shrinkwrap", "shrinkwrap-api" ).versionRef( "shrinkwrap" )
|
|
alias( "shrinkwrapDescriptors" ).to( "org.jboss.shrinkwrap.descriptors", "shrinkwrap-descriptors-impl-javaee" ).versionRef( "shrinkwrapDescriptors" )
|
|
alias( "shrinkwrapDescriptorsApi" ).to( "org.jboss.shrinkwrap.descriptors", "shrinkwrap-descriptors-api-javaee" ).versionRef( "shrinkwrapDescriptors" )
|
|
|
|
alias( "jbossJta" ).to( "org.jboss.narayana.jta", "narayana-jta" ).version( "6.0.0.CR1" )
|
|
alias( "jbossTxSpi" ).to( "org.jboss", "jboss-transaction-spi-jakarta" ).version( "7.6.1.Final" )
|
|
alias( "wildFlyTxnClient" ).to( "org.wildfly.transaction", "wildfly-transaction-client-jakarta" ).version( "2.0.0.Final" )
|
|
alias( "weld" ).to( "org.jboss.weld.se", "weld-se-shaded" ).version( "4.0.1.SP1" )
|
|
}
|
|
dbLibs {
|
|
String h2Version = settings.ext.find( "gradle.libs.versions.h2" )
|
|
if ( h2Version == null ) {
|
|
h2Version = "2.1.214"
|
|
}
|
|
String h2gisVersion = settings.ext.find( "gradle.libs.versions.h2gis" )
|
|
if ( h2gisVersion == null ) {
|
|
h2gisVersion = "2.1.0"
|
|
}
|
|
String hsqldbVersion = settings.ext.find( "gradle.libs.versions.hsqldb" )
|
|
if ( hsqldbVersion == null ) {
|
|
hsqldbVersion = "2.7.1"
|
|
}
|
|
String derbyVersion = settings.ext.find( "gradle.libs.versions.derby" )
|
|
if ( derbyVersion == null ) {
|
|
// Latest Derby version 10.16.1.1 only supports JDK 17+, but 10.15.2 should be compatible
|
|
derbyVersion = "10.15.2.0"
|
|
}
|
|
version( "h2", h2Version )
|
|
version( "h2gis", h2gisVersion )
|
|
version( "hsqldb", hsqldbVersion )
|
|
version( "derby", derbyVersion )
|
|
version( "pgsql", "42.5.0" )
|
|
version( "mysql", "8.0.27" )
|
|
version( "oracle", "21.8.0.0" )
|
|
|
|
alias( "h2" ).to( "com.h2database", "h2" ).versionRef( "h2" )
|
|
alias( "h2gis" ).to( "org.orbisgis", "h2gis" ).versionRef( "h2gis" )
|
|
alias( "hsqldb" ).to( "org.hsqldb", "hsqldb" ).versionRef( "hsqldb" )
|
|
alias( "derby" ).to( "org.apache.derby", "derby" ).versionRef( "derby" )
|
|
alias( "postgresql" ).to( "org.postgresql", "postgresql" ).versionRef( "pgsql" )
|
|
alias( "cockroachdb" ).to( "org.postgresql", "postgresql" ).version( "42.2.8" )
|
|
alias( "mysql" ).to( "mysql", "mysql-connector-java" ).versionRef( "mysql" )
|
|
alias( "tidb" ).to( "mysql", "mysql-connector-java" ).versionRef( "mysql" )
|
|
alias( "mariadb" ).to( "org.mariadb.jdbc", "mariadb-java-client" ).version( "2.7.7" )
|
|
alias( "oracle" ).to( "com.oracle.database.jdbc", "ojdbc8" ).versionRef( "oracle" )
|
|
alias( "oracleXml" ).to( "com.oracle.database.xml", "xdb" ).versionRef( "oracle" )
|
|
alias( "oracleXmlParser" ).to( "com.oracle.database.xml", "xmlparserv2" ).versionRef( "oracle" )
|
|
alias( "mssql" ).to( "com.microsoft.sqlserver", "mssql-jdbc" ).version( "11.2.0.jre11" )
|
|
alias( "db2" ).to( "com.ibm.db2", "jcc" ).version( "11.5.7.0" )
|
|
alias( "hana" ).to( "com.sap.cloud.db.jdbc", "ngdbc" ).version( "2.4.59" )
|
|
alias( "sybase" ).to( "net.sourceforge.jtds", "jtds" ).version( "1.3.1" )
|
|
alias( "informix" ).to( "com.ibm.informix", "jdbc" ).version( "4.10.12" )
|
|
alias( "firebird" ).to( "org.firebirdsql.jdbc", "jaybird" ).version( "4.0.8.java11" )
|
|
}
|
|
mavenLibs {
|
|
alias( "mavenCore" ).to( "org.apache.maven", "maven-core" ).version( "3.8.1" )
|
|
alias( "mavenArtifact" ).to( "org.apache.maven", "maven-artifact" ).version( "3.0.5" )
|
|
alias( "mavenPlugin" ).to( "org.apache.maven", "maven-plugin-api" ).version( "3.0.5" )
|
|
alias( "mavenPluginTools" ).to( "org.apache.maven.plugin-tools", "maven-plugin-annotations" ).version( "3.2" )
|
|
}
|
|
}
|
|
}
|
|
|
|
rootProject.name = 'hibernate-orm'
|
|
|
|
apply from: file( 'gradle/gradle-enterprise.gradle' )
|
|
|
|
if ( !JavaVersion.current().java11Compatible ) {
|
|
throw new GradleException( "Gradle must be run with Java 11 or later" )
|
|
}
|
|
|
|
buildCache {
|
|
local {
|
|
// do not use local build cache for CI jobs, period!
|
|
enabled = !settings.ext.isCiEnvironment
|
|
}
|
|
remote(HttpBuildCache) {
|
|
enabled = true
|
|
push = settings.ext.populateRemoteBuildCache
|
|
url = 'https://ge.hibernate.org/cache/'
|
|
}
|
|
}
|
|
|
|
gradle.ext.baselineJavaVersion = JavaLanguageVersion.of( 11 )
|
|
|
|
// Gradle does bytecode transformation on tests.
|
|
// You can't use bytecode higher than what Gradle supports, even with toolchains.
|
|
def GRADLE_MAX_SUPPORTED_BYTECODE_VERSION = 17
|
|
|
|
// If either 'main.jdk.version' or 'test.jdk.version' is set, enable the toolchain and use the selected jdk.
|
|
// If only one property is set, the other defaults to the baseline Java version (11).
|
|
// Note that when toolchain is enabled, you also need to specify
|
|
// the location of the selected jdks
|
|
// (auto-download and auto-detect are disabled in gradle.properties).
|
|
//
|
|
// Example (with SDKMAN):
|
|
// ./gradlew build -Ptest.jdk.version=15 \
|
|
// -Porg.gradle.java.installations.paths=$SDKMAN_CANDIDATES_DIR/java/15.0.1-open,$SDKMAN_CANDIDATES_DIR/java/8
|
|
if ( hasProperty( 'main.jdk.version' ) || hasProperty( 'test.jdk.version' ) ) {
|
|
// Testing a particular JDK version
|
|
// Gradle doesn't support all JDK versions unless we use toolchains
|
|
gradle.ext.javaToolchainEnabled = true
|
|
gradle.ext.javaVersions = [
|
|
main: [
|
|
compiler: JavaLanguageVersion.of( hasProperty( 'main.jdk.version' )
|
|
? getProperty( 'main.jdk.version' ) : gradle.ext.baselineJavaVersion.asInt() ),
|
|
release: gradle.ext.baselineJavaVersion
|
|
],
|
|
test: [
|
|
compiler: JavaLanguageVersion.of( hasProperty( 'test.jdk.version' )
|
|
? getProperty( 'test.jdk.version' ) : gradle.ext.baselineJavaVersion.asInt() )
|
|
]
|
|
]
|
|
def testCompilerVersion = gradle.ext.javaVersions.test.compiler
|
|
if ( testCompilerVersion.asInt() > GRADLE_MAX_SUPPORTED_BYTECODE_VERSION ) {
|
|
logger.warn( "[WARN] Gradle does not support bytecode version '${testCompilerVersion}'." +
|
|
" Forcing test bytecode to version ${GRADLE_MAX_SUPPORTED_BYTECODE_VERSION}." )
|
|
gradle.ext.javaVersions.test.release = JavaLanguageVersion.of( GRADLE_MAX_SUPPORTED_BYTECODE_VERSION )
|
|
}
|
|
else {
|
|
gradle.ext.javaVersions.test.release = testCompilerVersion
|
|
}
|
|
gradle.ext.javaVersions.test.launcher = testCompilerVersion
|
|
}
|
|
else {
|
|
// Not testing a particular JDK version: we will use the same JDK used to run Gradle.
|
|
// We disable toolchains for convenience, so that anyone can just run the build with their own JDK
|
|
// without any additional options and without downloading the whole JDK.
|
|
gradle.ext.javaToolchainEnabled = false
|
|
def gradleJdkVersion = JavaLanguageVersion.of( JavaVersion.current().getMajorVersion() )
|
|
if ( gradleJdkVersion.asInt() > GRADLE_MAX_SUPPORTED_BYTECODE_VERSION ) {
|
|
logger.warn( "[WARN] Gradle does not support this JDK, because it is too recent; build is likely to fail." +
|
|
" To avoid failures, you should use an older Java version when running Gradle, and rely on toolchains." +
|
|
" To that end, specify the version of Java you want to run tests with using property 'test.jdk.version'," +
|
|
" and specify the path to JDK8 *and* a JDK of the test version using property 'org.gradle.java.installations.paths'." +
|
|
" Example:" +
|
|
"./gradlew build -Ptest.jdk.version=15 -Porg.gradle.java.installations.paths=\$SDKMAN_CANDIDATES_DIR/java/15.0.1-open,\$SDKMAN_CANDIDATES_DIR/java/8" )
|
|
}
|
|
|
|
gradle.ext.javaVersions = [
|
|
main: [
|
|
compiler: gradleJdkVersion,
|
|
release: gradle.ext.baselineJavaVersion
|
|
],
|
|
test: [
|
|
compiler: gradleJdkVersion,
|
|
release: JavaLanguageVersion.of(
|
|
Math.min( GRADLE_MAX_SUPPORTED_BYTECODE_VERSION, gradleJdkVersion.asInt() ) ),
|
|
launcher: gradleJdkVersion
|
|
]
|
|
]
|
|
}
|
|
|
|
logger.lifecycle "Java versions for main code: " + gradle.ext.javaVersions.main
|
|
logger.lifecycle "Java versions for tests: " + gradle.ext.javaVersions.test
|
|
|
|
include 'hibernate-core'
|
|
include 'hibernate-testing'
|
|
|
|
include 'hibernate-envers'
|
|
include 'hibernate-spatial'
|
|
|
|
include 'hibernate-platform'
|
|
|
|
include 'hibernate-community-dialects'
|
|
|
|
include 'hibernate-c3p0'
|
|
include 'hibernate-proxool'
|
|
include 'hibernate-hikaricp'
|
|
include 'hibernate-vibur'
|
|
include 'hibernate-agroal'
|
|
|
|
include 'hibernate-jcache'
|
|
|
|
include 'hibernate-micrometer'
|
|
include 'hibernate-graalvm'
|
|
include 'hibernate-integrationtest-java-modules'
|
|
|
|
include 'documentation'
|
|
include 'release'
|
|
|
|
include 'metamodel-generator'
|
|
project(':metamodel-generator').projectDir = new File(rootProject.projectDir, "tooling/metamodel-generator")
|
|
project(':metamodel-generator').name = 'hibernate-jpamodelgen'
|
|
|
|
include 'hibernate-gradle-plugin'
|
|
project(':hibernate-gradle-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-gradle-plugin")
|
|
|
|
include 'hibernate-enhance-maven-plugin'
|
|
project(':hibernate-enhance-maven-plugin').projectDir = new File(rootProject.projectDir, "tooling/hibernate-enhance-maven-plugin")
|
|
|
|
include 'hibernate-ant'
|
|
project(':hibernate-ant').projectDir = new File(rootProject.projectDir, "tooling/hibernate-ant")
|
|
|
|
|
|
rootProject.children.each { project ->
|
|
project.buildFileName = "${project.name}.gradle"
|
|
assert project.projectDir.isDirectory()
|
|
assert project.buildFile.exists()
|
|
assert project.buildFile.isFile()
|
|
}
|
|
include 'hibernate-platform'
|
|
|