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 . */ plugins { id 'java-gradle-plugin' id 'com.gradle.plugin-publish' version '0.14.0' id 'com.github.sebersole.testkit-junit5' version '1.2.0' } apply from: rootProject.file( 'gradle/java-module.gradle' ) description = "Gradle plugin for integrating Hibernate aspects into your build" ext { pluginId = 'org.hibernate.orm' pluginVersion = project.version } dependencies { // compileOnly project( ':hibernate-core' ) // // implementation gradleApi() // implementation localGroovy() // // testRuntimeOnly project( ':hibernate-core' ) { // } implementation project( ':hibernate-core' ) implementation libraries.jpa implementation libraries.byteBuddy implementation gradleApi() implementation localGroovy() } gradlePlugin { plugins { ormPlugin { id = project.pluginId implementationClass = 'org.hibernate.orm.tooling.gradle.HibernateOrmPlugin' } } } pluginBundle { website = 'https://github.com/hibernate/hibernate-orm/tree/main/tooling/hibernate-gradle-plugin' vcsUrl = 'https://github.com/hibernate/hibernate-orm/tree/main/tooling/hibernate-gradle-plugin' tags = ['hibernate','orm','bytecode','enhancement','bytebuddy'] // sigh mavenCoordinates { groupId = project.group.toString() artifactId = project.name version = project.version.toString() } plugins { ormPlugin { id = project.pluginId displayName = 'Gradle plugin for Hibernate ORM' description = 'Applies Hibernate aspects into the build' } } } task publish { dependsOn tasks.publishPlugins } processResources { filter( ReplaceTokens, tokens: [ 'hibernateVersion': getVersion() ] ) } tasks.withType( GroovyCompile ) { options.encoding = 'UTF-8' } if ( !gradle.ext.javaToolchainEnabled ) { tasks.withType( GroovyCompile ) { sourceCompatibility = JavaVersion.toVersion( gradle.ext.baselineJavaVersion ) targetCompatibility = JavaVersion.toVersion( gradle.ext.baselineJavaVersion ) } } else { logger.warn( "[WARN] Toolchains are not yet supported for Groovy compilation." + " Using the JDK that runs Gradle for Groovy compilation." ) } tasks.test { if ( gradle.ext.javaVersions.test.launcher.asInt() >= 9 ) { // Needs add-opens because Gradle uses illegal accesses to inject... mocks? Something like that. jvmArgs( ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] ) } } task release { dependsOn tasks.publishPlugins } afterEvaluate { if ( project.ormVersion.isSnapshot ) { release.enabled false publish.enabled false publishPlugins.enabled false } } gradle.taskGraph.whenReady { tg -> if ( tg.hasTask( project.tasks.publishPlugins ) && project.tasks.publishPlugins.enabled ) { // look for sys-prop or env-var overrides of the tokens used for publishing if ( System.properties.containsKey( 'gradle.publish.key' ) || System.properties.containsKey( 'gradle.publish.secret' ) || System.getenv().containsKey( 'GRADLE_PUBLISH_KEY' ) || System.getenv().containsKey( 'GRADLE_PUBLISH_SECRET' ) ) { // nothing to do - already explicitly set } else { // use the values from the credentials provider, if any if ( credentials.hibernatePluginPortalUsername == null ) { throw new RuntimeException( "`hibernatePluginPortalUsername` not found" ) } if ( credentials.hibernatePluginPortalPassword == null ) { throw new RuntimeException( "`hibernatePluginPortalPassword` not found" ) } System.setProperty( 'gradle.publish.key', credentials.hibernatePluginPortalUsername ) System.setProperty( 'gradle.publish.secret', credentials.hibernatePluginPortalPassword ) } } }