/* * 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 . */ description = 'Enhance Plugin of the Hibernate project for use with Maven build system.' apply from: rootProject.file( 'gradle/published-java-module.gradle' ) apply plugin: 'maven' import org.apache.tools.ant.filters.ReplaceTokens group = 'org.hibernate.orm.tooling' processResources { include "**/lifecycle-mapping-metadata.xml" include "**/plugin-help.xml" into processResources.destinationDir filter(ReplaceTokens, tokens: ['version' : project.version]) } dependencies { implementation( project(':hibernate-core') ) { transitive = false } implementation( libraries.jpa ) { transitive = false } implementation( libraries.maven_core ) { transitive = false } implementation( libraries.maven_artifact ) { transitive = false } implementation( libraries.maven_plugin ) { transitive = false } implementation( libraries.maven_plugin_tools ) { transitive = false } implementation 'org.codehaus.plexus:plexus-utils:3.0.24' implementation 'org.sonatype.plexus:plexus-build-api:0.0.7' runtimeOnly libraries.maven_core runtimeOnly libraries.maven_artifact runtimeOnly libraries.maven_plugin runtimeOnly libraries.maven_plugin_tools } // Inject dependencies into plugin.xml // Note: injecting the full dependency, rather than just the version, // removing the need to maintain artifact names that might change with upgrades (JPA/JTA API version, etc.) task processPluginXml(type: Copy) { // force out-of-date if version changes inputs.property("version", project.version) from "src/main/resources/META-INF/maven/plugin.xml" into "$processResources.destinationDir/META-INF/maven" filter(ReplaceTokens, tokens: ['version' : project.version, 'generated-dependencies' :\ generateMavenDependency(libraries.jpa)\ + generateMavenDependency(libraries.antlr)\ + generateMavenDependency(libraries.jta)\ + generateMavenDependency(libraries.commons_annotations)\ + generateMavenDependency(libraries.javassist)\ + generateMavenDependency(libraries.byteBuddy)\ + generateMavenDependency(libraries.logging)\ + generateMavenDependency("org.hibernate:hibernate-core:" + project.version)]) } // TODO: There may be a way to do this directly with Gradle's Maven plugin, but it's still incubating // and I'd rather not rely on it yet. def generateMavenDependency(String gradleDependency) { String[] split = gradleDependency.split(":") return "\n"\ + "\n " + split[0] + ""\ + "\n " + split[1] + ""\ + "\n " + split[2] + ""\ + "\n jar"\ + "\n" } // Writes pom.xml using merged Gradle dependency and MavenPom configuration. processResources.doLast { ext.pomDefinition = pom { configurations { // avoiding test dependencies in generated pom compile runtime } project { groupId project.group packaging 'maven-plugin' name 'Hibernate Enhance Maven Plugin' description 'Enhance Plugin of the Hibernate project for use with Maven build system.' properties { 'project.build.sourceEncoding' 'UTF-8' } } } // HHH-9679 --- build in pom{} conflicts with FactoryBuilderSupport#build so we write that portion of XML by hand ext.pomDefinition.withXml { asNode().appendNode('build').appendNode('plugins').appendNode('plugin').with { appendNode('groupId', 'org.apache.maven.plugins') appendNode('artifactId', 'maven-plugin-plugin') appendNode('version', '3.2') appendNode('configuration').appendNode('skipErrorNoDescriptorsFound', 'true') appendNode('executions').appendNode('execution').with { appendNode('id', 'mojo-descriptor') appendNode('goals').appendNode('goal', 'descriptor') } } } ext.pomDefinition.writeTo("$processResources.destinationDir/pom.xml") } processResources.dependsOn processPluginXml