/* * 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 . */ import org.apache.tools.ant.filters.ReplaceTokens plugins { id 'org.hibernate.build.xjc-jakarta' } description = 'Hibernate\'s core ORM functionality' apply from: rootProject.file( 'gradle/published-java-module.gradle' ) apply plugin: 'org.hibernate.orm.antlr' apply plugin: 'org.hibernate.matrix-test' configurations { tests { description = 'Configuration for the produced test jar' } } dependencies { api libraries.jakarta_jpa api libraries.jakarta_jta api libraries.jandex api libraries.classmate api libraries.commons_annotations implementation libraries.byteBuddy implementation libraries.jakarta_activation implementation libraries.jakarta_jaxb_api implementation libraries.jakarta_jaxb_runtime implementation libraries.jakarta_inject implementation libraries.antlr4_runtime compileOnly libraries.jakarta_jacc compileOnly libraries.jakarta_validation compileOnly libraries.jakarta_cdi compileOnly libraries.jackson compileOnly libraries.jakarta_jsonb testImplementation project(':hibernate-testing') testImplementation project(':hibernate-ant') testImplementation libraries.shrinkwrap_api testImplementation libraries.shrinkwrap testImplementation libraries.shrinkwrap_descriptors_api_javaee testImplementation libraries.shrinkwrap_descriptors_impl_javaee testImplementation libraries.jakarta_jacc testImplementation libraries.jakarta_validation testImplementation libraries.jakarta_el testImplementation( libraries.jakarta_validator ) { // for test runtime transitive = true } testImplementation libraries.jakarta_cdi testImplementation libraries.mockito testImplementation libraries.mockito_inline testImplementation libraries.jodaTime testImplementation libraries.assertj testRuntimeOnly libraries.byteBuddy testRuntimeOnly libraries.jakarta_weld testRuntimeOnly libraries.wildfly_transaction_client testRuntimeOnly libraries.jackson testAnnotationProcessor project( ':hibernate-jpamodelgen' ) antlr libraries.antlr xjc libraries.jakarta_jaxb_xjc xjc libraries.jakarta_jaxb_runtime xjc rootProject.fileTree(dir: 'patched-libs/jaxb2-basics', include: '*.jar') } jar { manifest { attributes( 'Main-Class': 'org.hibernate.Version' ) } } ext { jaxbTargetDir = project.file( "${buildDir}/generated/sources/xjc/main" ) } sourceSets { main { // add the XJC generated JAXB classes to the main source-set java{ srcDir project.jaxbTargetDir } } // resources inherently exclude sources test { resources { srcDir 'src/test/java' srcDir 'src/test/resources' srcDir 'src/test/bundles' } } } xjc { outputDirectory = project.jaxbTargetDir schemas { cfg { xsdFile = 'src/main/resources/org/hibernate/xsd/cfg/legacy-configuration-4.0.xsd' xjcBindingFile = 'src/main/xjb/hbm-configuration-bindings.xjb' } hbm { xsdFile = file( 'src/main/resources/org/hibernate/xsd/mapping/legacy-mapping-4.0.xsd' ) xjcBindingFile = file( 'src/main/xjb/hbm-mapping-bindings.xjb' ) xjcExtensions += ['inheritance', 'simplify'] } mapping { xsdFile = file( 'src/main/resources/org/hibernate/jpa/orm_2_2.xsd' ) xjcBindingFile = file( 'src/main/xjb/mapping-bindings.xjb' ) xjcExtensions += ['inheritance'] } } } task copyBundleResources (type: Copy) { inputs.property( "db", db ) ext { bundlesTargetDir = file( "${buildDir}/bundles" ) bundleTokens = dbBundle[db] ext.bundleTokens['buildDirName'] = project.relativePath( buildDir ) } from file('src/test/bundles/templates') into ext.bundlesTargetDir filter( ReplaceTokens, tokens: ext.bundleTokens) doFirst { ext.bundlesTargetDir.mkdirs() } } processTestResources { dependsOn copyBundleResources duplicatesStrategy = DuplicatesStrategy.WARN } sourcesJar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } task testJar(type: Jar, dependsOn: testClasses) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE archiveClassifier.set( 'test' ) from sourceSets.test.output } artifacts { tests testJar } task generateEnversStaticMetamodel( type: JavaCompile, description: "Generate the Hibernate Envers revision entity static metamodel classes." ) { source = sourceSets.main.java // we only want to include these specific classes for metamodel generation. // if envers adds any additional revision entity classes, they must be listed here. include 'org/hibernate/envers/DefaultRevisionEntity.java' include 'org/hibernate/envers/DefaultTrackingModifiedEntitiesRevisionEntity.java' include 'org/hibernate/envers/enhanced/SequenceIdRevisionEntity.java' include 'org/hibernate/envers/enhanced/SequenceIdTrackingModifiedEntitiesRevisionEntity.java' classpath = sourceSets.main.runtimeClasspath + sourceSets.test.compileClasspath options.compilerArgs = [ "-proc:only", "-processor", "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor" ] // put static metamodel classes back out to the source tree since they're version controlled. destinationDirectory = new File( "${projectDir}/src/main/java" ) } tasks.withType( Test.class ).each { test -> test.systemProperty 'file.encoding', 'utf-8' // See org.hibernate.boot.model.naming.NamingHelperTest.DefaultCharset.set test.jvmArgs( ['--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED'] ) // Weld needs this to generate proxies test.jvmArgs( ['--add-opens', 'java.base/java.security=ALL-UNNAMED'] ) test.jvmArgs( ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] ) test.beforeTest { descriptor -> //println "Starting test: " + descriptor } // Allow to exclude specific tests if (project.hasProperty('excludeTests')) { test.filter { excludeTestsMatching project.property('excludeTests').toString() } } // widen the overall 6.0 filter to include various package-protected tests test.include 'org/hibernate/bytecode/internal/bytebuddy/**' test.include 'org/hibernate/event/service/internal/**' test.include 'org/hibernate/tool/schema/internal/**' // test.include '**/*' }