/* * 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 description = 'Hibernate\'s core ORM functionality' apply from: rootProject.file( 'gradle/published-java-module.gradle' ) apply plugin: 'antlr' apply plugin: 'hibernate-matrix-testing' apply plugin: 'org.hibernate.build.gradle.xjc' ext { jaxbTargetDir = file( "${buildDir}/generated-src/jaxb/main" ) } sourceSets.main { java.srcDir project.jaxbTargetDir } sourceSets { // resources inherently exclude sources test { resources { setSrcDirs( ['src/test/java','src/test/resources'] ) } } testJavassist { java { compileClasspath += main.output + test.output runtimeClasspath += main.output + test.output } } } configurations { tests { description = 'Configuration for the produced test jar' } //Configures the compile and runtime configurations for our javassist tests //and includes the dependencies of the test task. testJavassistCompile.extendsFrom testCompile testJavassistRuntime.extendsFrom testRuntime } dependencies { compile( libraries.jpa ) // This can now be made provided compile( libraries.javassist ) // Could be made optional? compile( libraries.byteBuddy ) compile( libraries.antlr ) compile( libraries.jta ) compile( libraries.jandex ) compile( libraries.classmate ) compile( libraries.activation ) // We need dom4j for a number of things temporarily: // 1) (unsupported) EntityMode.DOM4J support // 2) Envers // 3) hibernate-commons-annotations compile( libraries.dom4j ) compile( libraries.commons_annotations ) antlr( libraries.antlr ) // JAXB compile( libraries.jaxb_api ) compile( libraries.jaxb_runtime ) xjc( libraries.jaxb_runtime ) xjc( libraries.jaxb_xjc ) xjc( libraries.jaxb2_basics ) xjc( libraries.jaxb2_basics_ant ) xjc( libraries.activation ) provided( libraries.jacc ) provided( libraries.validation ) provided( libraries.ant ) provided( libraries.cdi ) testCompile( project(':hibernate-testing') ) testCompile( libraries.shrinkwrap_api ) testCompile( libraries.shrinkwrap ) testCompile( libraries.jacc ) testCompile( libraries.validation ) testCompile( libraries.jandex ) testCompile( libraries.classmate ) testCompile( libraries.mockito ) testCompile( libraries.mockito_inline ) testCompile( libraries.jodaTime ) testCompile( libraries.assertj ) testCompile( libraries.cdi ) testCompile( libraries.validator ) { // for test runtime transitive = true } // for testing stored procedure support testCompile( libraries.derby ) testRuntime( "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final" ) testRuntime( libraries.expression_language ) testRuntime( 'jaxen:jaxen:1.1' ) testRuntime( libraries.javassist ) testRuntime( libraries.byteBuddy ) testRuntime( libraries.weld ) testRuntime( libraries.atomikos ) testRuntime( libraries.atomikos_jta ) testRuntime(libraries.wildfly_transaction_client) testAnnotationProcessor( project( ':hibernate-jpamodelgen' ) ) testCompile libraries.shrinkwrap_descriptors_api_javaee testCompile libraries.shrinkwrap_descriptors_impl_javaee testCompile libraries.jboss_ejb_spec_jar testCompile libraries.jboss_annotation_spec_jar // Additional tests requiring Javassist // folder in src/javassist/java testJavassistCompile libraries.javassist } jar { manifest { attributes( '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 jakarta.validation optional and do not reference a version range (because that's what we used to do) 'jakarta.validation;resolution:=optional;version=!', 'jakarta.validation.constraints;resolution:=optional;version=!', 'jakarta.validation.groups;resolution:=optional;version=!', 'jakarta.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 '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( ',' ), ) } } //idea { // module { // sourceDirs += file( "${buildDir}/generated-src/antlr/main" ) // } //} xjc { outputDir = project.jaxbTargetDir schemas { cfg { xsd = file( 'src/main/resources/org/hibernate/xsd/cfg/legacy-configuration-4.0.xsd' ) xjcBinding = file( 'src/main/xjb/hbm-configuration-bindings.xjb' ) } hbm { xsd = file( 'src/main/resources/org/hibernate/xsd/mapping/legacy-mapping-4.0.xsd' ) xjcBinding = file( 'src/main/xjb/hbm-mapping-bindings.xjb' ) xjcExtensions = ['inheritance', 'simplify'] } } } //sourceSets.main.sourceGeneratorsTask.dependsOn xjc //sourceSets.main.sourceGeneratorsTask.dependsOn generateGrammarSource tasks.compile.dependsOn generateGrammarSource task copyBundleResources (type: Copy) { ext { bundlesTargetDir = file( "${buildDir}/bundles" ) bundleTokens = dbBundle[db] ext.bundleTokens['buildDirName'] = buildDir.absolutePath } from file('src/test/bundles') into ext.bundlesTargetDir filter( ReplaceTokens, tokens: ext.bundleTokens) doFirst { ext.bundlesTargetDir.mkdirs() } } processTestResources.dependsOn copyBundleResources task testJar(type: Jar, dependsOn: testClasses) { archiveClassifier.set( 'test' ) from sourceSets.test.output } artifacts { tests testJar } test { systemProperty 'file.encoding', 'utf-8' beforeTest { descriptor -> //println "Starting test: " + descriptor } } //Create the task that runs the integration tests found from the //configured source directory and uses the correct classpath. task testJavassist(type: Test) { testClassesDirs = sourceSets.testJavassist.output.classesDirs classpath = sourceSets.testJavassist.runtimeClasspath //If you want to ensure that integration tests are run every time when you invoke //this task, uncomment the following line. //outputs.upToDateWhen { false } } check.dependsOn testJavassist testJavassist.mustRunAfter test