/* * 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 . */ plugins { id 'org.hibernate.build.xjc-jakarta' } description = 'Annotation Processor to generate JPA 2 static metamodel classes' apply from: rootProject.file( 'gradle/published-java-module.gradle' ) apply plugin: 'version-injection' ext { xjcTargetDir = file( "${buildDir}/generated/sources/xjc/main" ) xsdDir = file( "${projectDir}/src/main/xsd" ) } dependencies { implementation jakartaLibs.jaxbApi implementation jakartaLibs.jaxb implementation libs.antlrRuntime implementation project( ':hibernate-core' ) implementation libs.byteBuddy xjc jakartaLibs.xjc xjc jakartaLibs.jaxb xjc rootProject.fileTree(dir: 'patched-libs/jaxb2-basics', include: '*.jar') testImplementation project( ':hibernate-core' ) testImplementation jakartaLibs.validation testImplementation jakartaLibs.annotation } sourceSets.main { java.srcDir xjcTargetDir resources.srcDir xsdDir } compileTestJava { options.compilerArgs += [ "-proc:none" ] } // Tests with records if ( gradle.ext.javaVersions.test.release.asInt() >= 17 && gradle.ext.javaToolchainEnabled ) { // We need to configure the source and target version to 17 //compileTestJava17Java { compileTestJava { javaCompiler = javaToolchains.compilerFor { languageVersion = gradle.ext.javaVersions.test.compiler } sourceCompatibility = 17 targetCompatibility = 17 } test { javaLauncher = javaToolchains.launcherFor { languageVersion = gradle.ext.javaVersions.test.launcher } if ( gradle.ext.javaVersions.test.launcher.asInt() >= 19 ) { logger.warn( "The version of Java bytecode that will be tested is not supported by Bytebuddy by default. " + " Setting 'net.bytebuddy.experimental=true'." ) systemProperty 'net.bytebuddy.experimental', true } } } else { sourceSets { test { java { exclude '**/records/*.java' } } } } task jaxb { // configure Gradle up-to-date checking inputs.dir( xsdDir ).withPropertyName("xsdDir" ).withPathSensitivity( PathSensitivity.RELATIVE ) outputs.dir( xjcTargetDir ) outputs.cacheIf { true } // perform actions doLast { xjcTargetDir.mkdirs() ant.taskdef(name: 'xjc', classname: 'org.jvnet.jaxb2_commons.xjc.XJC2Task', classpath: configurations.xjc.asPath) ant.xjc( destdir: ( xjcTargetDir as File ).absolutePath, package: 'org.hibernate.jpamodelgen.xml.jaxb', extension: 'true' ) { project.ant.arg line: '-no-header' project.ant.arg line: '-npa' schema( dir: xsdDir.path, includes: "*.xsd" ) } } } tasks.sourcesJar.dependsOn jaxb tasks.sourcesJar.dependsOn ':hibernate-core:generateHqlParser' tasks.sourcesJar.dependsOn ':hibernate-core:generateSqlScriptParser' tasks.compileJava.dependsOn jaxb checkstyleMain.exclude '**/jaxb/**'