hibernate-orm/tooling/hibernate-gradle-plugin/hibernate-gradle-plugin.gradle

134 lines
4.0 KiB
Groovy

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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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
// look for command-line overrides of the username/password pairs for publishing
if ( project.hasProperty( 'hibernatePluginPortalUsername' ) ) {
if ( ! project.hasProperty( 'hibernatePluginPortalPassword' ) ) {
throw new GradleException( "Should specify both `hibernatePluginPortalUsername` and `hibernatePluginPortalPassword` as project properties" );
}
credentials.hibernatePluginPortalUsername = project.property( 'hibernatePluginPortalUsername' )
credentials.hibernatePluginPortalPassword = project.property( 'hibernatePluginPortalPassword' )
}
else if ( System.properties.hibernatePluginPortalUsername != null ) {
if ( System.properties.hibernatePluginPortalPassword == null ) {
throw new GradleException( "Should specify both `hibernatePluginPortalUsername` and `hibernatePluginPortalPassword` as system properties" );
}
credentials.hibernatePluginPortalUsername = System.properties.hibernatePluginPortalUsername
credentials.hibernatePluginPortalPassword = System.properties.hibernatePluginPortalPassword
}
}
dependencies {
// compileOnly project( ':hibernate-core' )
//
// implementation gradleApi()
// implementation localGroovy()
//
// testRuntimeOnly project( ':hibernate-core' ) {
// }
implementation project( ':hibernate-core' )
implementation libraries.jpa
implementation libraries.javassist
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']
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 ) ) {
if ( credentials.hibernatePluginPortalUsername == null ) {
throw new RuntimeException( "`hibernatePluginPortalUsername` not found" )
}
if ( credentials.hibernatePluginPortalPassword == null ) {
throw new RuntimeException( "`hibernatePluginPortalPassword` not found" )
}
}
}