/* * 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 . */ 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.14' id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.11.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.6.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.4" ) 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( "jacksonJsr310" ).to( "com.fasterxml.jackson.datatype", "jackson-datatype-jsr310" ).version( "2.14.1" ) alias( "validator" ).to( "org.hibernate.validator", "hibernate-validator" ).version( "8.0.0.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.8" ) 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.2" ) 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.2" ) alias( "jacc" ).to( "jakarta.authorization", "jakarta.authorization-api" ).version( "2.1.0" ) alias( "cdi" ).to( "jakarta.enterprise", "jakarta.enterprise.cdi-api" ).version( "4.0.1" ) 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.1" ) 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" ) } testLibs { version( "junit4", "4.13.2" ) version( "junit5", "5.9.2" ) version( "assertj", "3.14.0" ) version( "mockito", "5.1.1" ) 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.Final" ) alias( "jbossTxSpi" ).to( "org.jboss", "jboss-transaction-spi" ).version( "8.0.0.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'