import org.apache.tools.ant.filters.ReplaceTokens /* * 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 . */ apply plugin: 'antlr' apply plugin: 'hibernate-matrix-testing' apply plugin: 'org.hibernate.build.gradle.xjc' configurations { hibernateJpaModelGenTool { description = "Dependencies for running the Hibernate JPA Metamodel Generator AnnotationProcessor tool" } tests { description = 'Configuration for the produced test jar' } } dependencies { compile( libraries.jpa ) compile( libraries.javassist ) compile( libraries.antlr ) compile( libraries.jta ) compile( libraries.jandex ) compile( libraries.classmate ) // 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 ) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Java 9 ftw! if ( JavaVersion.current().isJava9Compatible() ) { // The JDK used to run Gradle is Java 9+, and we assume that that is the same // JDK for executing tasks xjc( 'com.sun.xml.bind:jaxb-impl:2.2.11' ) xjc( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' ) xjc( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' ) xjc( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' ) xjc( 'javax:javaee-api:7.0' ) testCompile( 'com.sun.xml.bind:jaxb-impl:2.2.11' ) testCompile( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' ) testCompile( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' ) testCompile( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' ) testCompile( 'javax:javaee-api:7.0' ) testRuntime( 'com.sun.xml.bind:jaxb-impl:2.2.11' ) testRuntime( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' ) testRuntime( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' ) testRuntime( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' ) testRuntime( 'javax:javaee-api:7.0' ) } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ antlr( libraries.antlr ) provided( libraries.jacc ) provided( libraries.validation ) provided( libraries.ant ) provided( "javax.enterprise:cdi-api:${cdiVersion}" ) testCompile( project(':hibernate-testing') ) testCompile( libraries.shrinkwrap_api ) testCompile( libraries.shrinkwrap ) testCompile( libraries.validation ) testCompile( libraries.jandex ) testCompile( libraries.classmate ) testCompile( libraries.mockito ) testCompile( 'joda-time:joda-time:2.3' ) // testCompile( "org.jboss.weld:weld-core:2.3.4.Final" ) // testCompile( "org.jboss.arquillian.container:arquillian-weld-ee-embedded-1.1:1.0.0.CR9" ) compile( "javax.enterprise:cdi-api:${cdiVersion}" ) { // we need to force it to make sure we influence the one coming from arquillian force=true } 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_api ) testRuntime( libraries.expression_language_impl ) testRuntime( 'jaxen:jaxen:1.1' ) testRuntime( libraries.javassist ) testCompile( project( ':hibernate-jpamodelgen' ) ) testCompile libraries.arquillian_junit_container testCompile libraries.arquillian_protocol_servlet testCompile libraries.shrinkwrap_descriptors_api_javaee testCompile libraries.shrinkwrap_descriptors_impl_javaee testCompile libraries.wildfly_arquillian_container_managed testCompile libraries.jboss_ejb_spec_jar testCompile libraries.jboss_annotation_spec_jar } mavenPom { name = 'Core Hibernate O/RM functionality' description = 'The core O/RM functionality as provided by Hibernate' } def osgiDescription() { return mavenPom.description } jar { manifest { mainAttributes( 'Main-Class': 'org.hibernate.Version' ) instructionFirst 'Import-Package', 'javax.security.auth;resolution:=optional', 'javax.security.jacc;resolution:=optional', 'javax.validation;resolution:=optional', 'javax.validation.constraints;resolution:=optional', 'javax.validation.groups;resolution:=optional', 'javax.validation.metadata;resolution:=optional', // TODO: Shouldn't have to explicitly list this, but the plugin // generates it with a [1.0,2) version. 'javax.persistence;version="2.1.0"', // Temporarily support JTA 1.1 -- Karaf and other frameworks still // use it. Without this, the plugin generates [1.2,2). // build.gradle adds javax.transaction for all modules 'javax.transaction.xa;version="[1.1,2)"', // 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.enterprise*', 'javax.enterprise.context.spi;resolution:=optional', 'javax.enterprise.inject.spi;resolution:=optional' // // TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer // // uses ClassLoaderServiceImpl. // instruction 'Export-Package', // 'org.hibernate.boot.registry.classloading.internal', // '*' } } ext { jaxbTargetDir = file( "${buildDir}/generated-src/jaxb/main" ) } sourceSets.main { java.srcDir jaxbTargetDir } // resources inherently exclude sources sourceSets.test.resources { setSrcDirs( ['src/test/java','src/test/resources'] ) } idea { module { sourceDirs += file( "${buildDir}/generated-src/antlr/main" ) } } xjc { outputDir = 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" ) from file('src/test/bundles') into bundlesTargetDir ext.bundleTokens = dbBundle[db] ext.bundleTokens["buildDirName"] = buildDir.absolutePath filter( ReplaceTokens, tokens: bundleTokens); doFirst { bundlesTargetDir.mkdirs() } } processTestResources.dependsOn copyBundleResources task testJar(type: Jar, dependsOn: testClasses) { classifier = 'test' from sourceSets.test.output } artifacts { tests testJar } if ( JavaVersion.current().isJava9Compatible() ) { logger.warn( '[WARN] Skipping Javassist-related tests for hibernate-core due to Javassist JDK 9 incompatibility' ) // we need to exclude tests using Javassist enhancement, which does not properly support // Java 9 yet - https://issues.jboss.org/browse/JASSIST-261 test { // rather than wild-cards, keep an explicit list exclude 'org/hibernate/jpa/test/enhancement/InterceptFieldClassFileTransformerTest.class' exclude 'org/hibernate/jpa/test/enhancement/runtime/JpaRuntimeEnhancementTest.class' exclude 'org/hibernate/test/bytecode/enhancement/EnhancerTest.class' exclude 'org/hibernate/test/bytecode/enhancement/basic/BasicInSessionTest.class' // also, any tests using Arquillian for in-container testing with WildFly currently // need to be excluded because WildFly does not yet work with Java 9 exclude 'org/hibernate/test/wf/ddl/**' exclude 'org/hibernate/jpa/test/cdi/**' } } processTestResources { doLast { copy { from file( 'src/test/resources' ) into file( "${buildDir}/resources/test" ) include 'arquillian.xml' include 'org/hibernate/test/wf/ddl/manifest.mf' expand wildFlyInstallDir: "${rootProject.buildDir.absolutePath}/wildfly-${wildflyVersion}", hibernateMajorMinorVersion: "${rootProject.hibernateMajorMinorVersion}", arquillianDeploymentExportDir: "${rootProject.buildDir.absolutePath}/arquillian-deployments" } } } test.dependsOn ":hibernate-orm-modules:prepareWildFlyForTests" test { systemProperty "file.encoding", "utf-8" }