HHH-13689 Replace uses of the deprecated osgi plugin with the biz.aQute.bnd plugin
https://docs.gradle.org/5.0-milestone-1/release-notes.html#deprecated-osgi-plugin
This commit is contained in:
parent
b301162660
commit
f795213e5a
|
@ -17,6 +17,7 @@ buildscript {
|
|||
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.7'
|
||||
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
|
||||
classpath 'de.thetaphi:forbiddenapis:2.5'
|
||||
classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:4.2.0'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ apply from: rootProject.file( 'gradle/libraries.gradle' )
|
|||
apply from: rootProject.file( 'gradle/databases.gradle' )
|
||||
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'osgi'
|
||||
apply plugin: 'biz.aQute.bnd.builder'
|
||||
|
||||
apply plugin: 'checkstyle'
|
||||
apply plugin: 'build-dashboard'
|
||||
|
|
|
@ -10,69 +10,90 @@ apply from: rootProject.file( 'gradle/java-module.gradle' )
|
|||
apply from: rootProject.file( 'gradle/publishing-repos.gradle' )
|
||||
apply from: rootProject.file( 'gradle/publishing-pom.gradle' )
|
||||
|
||||
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Jar
|
||||
|
||||
jar {
|
||||
manifest = osgiManifest {
|
||||
// GRADLE-1411: Even if we override Imports and Exports
|
||||
// auto-generation with instructions, classesDir and classpath
|
||||
// need to be here (temporarily).
|
||||
|
||||
if ( project.pluginManager.hasPlugin( 'groovy' ) ) {
|
||||
classesDir = sourceSets.main.groovy.outputDir
|
||||
}
|
||||
else {
|
||||
classesDir = sourceSets.main.java.outputDir
|
||||
}
|
||||
classpath = configurations.runtime
|
||||
|
||||
manifest {
|
||||
attributes(
|
||||
// Basic JAR manifest attributes
|
||||
'Specification-Title': project.name,
|
||||
'Specification-Version': project.version,
|
||||
'Specification-Vendor': 'Hibernate.org',
|
||||
'Implementation-Title': project.name,
|
||||
'Implementation-Version': project.version,
|
||||
'Implementation-Vendor': 'Hibernate.org',
|
||||
'Implementation-Vendor-Id': 'org.hibernate',
|
||||
'Implementation-Url': 'http://hibernate.org/orm',
|
||||
|
||||
// Java 9 module name
|
||||
instruction 'Automatic-Module-Name', project.java9ModuleName
|
||||
'Automatic-Module-Name': project.java9ModuleName,
|
||||
|
||||
// the OSGi metadata
|
||||
symbolicName project.java9ModuleName
|
||||
vendor 'Hibernate.org'
|
||||
description project.description
|
||||
docURL "http://www.hibernate.org/orm/${project.ormVersion.family}"
|
||||
// Hibernate-specific JAR manifest attributes
|
||||
'Hibernate-VersionFamily': project.ormVersion.family,
|
||||
'Hibernate-JpaVersion': project.jpaVersion.name,
|
||||
|
||||
instruction 'Import-Package',
|
||||
// BND Plugin instructions (for OSGi):
|
||||
'Bundle-Name': project.name,
|
||||
'Bundle-SymbolicName': project.java9ModuleName,
|
||||
'Bundle-Vendor': 'Hibernate.org',
|
||||
'Bundle-DocURL': "http://www.hibernate.org/orm/${project.ormVersion.family}",
|
||||
// This is overridden in some sub-projects
|
||||
'Import-Package': [
|
||||
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
|
||||
// use it. Without this, the plugin generates [1.2,2).
|
||||
'javax.transaction;version="[1.1,2)"',
|
||||
// Tell Gradle OSGi to still dynamically import the other packages.
|
||||
// IMPORTANT: Do not include the * in the modules' .gradle files.
|
||||
// If it exists more than once, the manifest will physically contain a *.
|
||||
// Also import every package referenced in the code
|
||||
// (note that '*' is resolved at build time to a list of packages)
|
||||
'*'
|
||||
|
||||
// Basic JAR manifest metadata
|
||||
instruction 'Specification-Title', project.name
|
||||
instruction 'Specification-Version', project.version
|
||||
instruction 'Specification-Vendor', 'Hibernate.org'
|
||||
instruction 'Implementation-Title', project.name
|
||||
instruction 'Implementation-Version', project.version
|
||||
instruction 'Implementation-Vendor', 'Hibernate.org'
|
||||
instruction 'Implementation-Vendor-Id', 'org.hibernate'
|
||||
instruction 'Implementation-Url', 'http://hibernate.org/orm'
|
||||
|
||||
instruction 'Hibernate-VersionFamily', project.ormVersion.family
|
||||
instruction 'Hibernate-JpaVersion', project.jpaVersion.name
|
||||
].join( ',' ),
|
||||
'-exportcontents': "*;version=${project.version}"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task sourcesJar(type: Jar) {
|
||||
from project.sourceSets.main.allSource
|
||||
manifest = project.tasks.jar.manifest
|
||||
manifest {
|
||||
attributes(
|
||||
// Basic JAR manifest attributes
|
||||
'Specification-Title': project.name,
|
||||
'Specification-Version': project.version,
|
||||
'Specification-Vendor': 'Hibernate.org',
|
||||
'Implementation-Title': project.name,
|
||||
'Implementation-Version': project.version,
|
||||
'Implementation-Vendor': 'Hibernate.org',
|
||||
'Implementation-Vendor-Id': 'org.hibernate',
|
||||
'Implementation-Url': 'http://hibernate.org/orm',
|
||||
|
||||
// Hibernate-specific JAR manifest attributes
|
||||
'Hibernate-VersionFamily': project.ormVersion.family,
|
||||
'Hibernate-JpaVersion': project.jpaVersion.name
|
||||
)
|
||||
}
|
||||
archiveClassifier.set( 'sources' )
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar) {
|
||||
from project.tasks.javadoc.outputs
|
||||
manifest = project.tasks.jar.manifest
|
||||
manifest {
|
||||
attributes(
|
||||
// Basic JAR manifest attributes
|
||||
'Specification-Title': project.name,
|
||||
'Specification-Version': project.version,
|
||||
'Specification-Vendor': 'Hibernate.org',
|
||||
'Implementation-Title': project.name,
|
||||
'Implementation-Version': project.version,
|
||||
'Implementation-Vendor': 'Hibernate.org',
|
||||
'Implementation-Vendor-Id': 'org.hibernate',
|
||||
'Implementation-Url': 'http://hibernate.org/orm',
|
||||
|
||||
// Hibernate-specific JAR manifest attributes
|
||||
'Hibernate-VersionFamily': project.ormVersion.family,
|
||||
'Hibernate-JpaVersion': project.jpaVersion.name
|
||||
)
|
||||
}
|
||||
archiveClassifier.set( 'javadoc' )
|
||||
}
|
||||
|
||||
|
|
|
@ -103,17 +103,24 @@ dependencies {
|
|||
|
||||
jar {
|
||||
manifest {
|
||||
mainAttributes( 'Main-Class': 'org.hibernate.Version' )
|
||||
attributes(
|
||||
'Main-Class': 'org.hibernate.Version',
|
||||
|
||||
instructionFirst 'Import-Package',
|
||||
// BND Plugin instructions (for OSGi):
|
||||
'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.
|
||||
// Make javax.security.jacc optional and do not reference a version range (because that's what we used to do)
|
||||
'javax.security.jacc;resolution:=optional;version=!',
|
||||
// Make javax.validation optional and do not reference a version range (because that's what we used to do)
|
||||
'javax.validation;resolution:=optional;version=!',
|
||||
'javax.validation.constraints;resolution:=optional;version=!',
|
||||
'javax.validation.groups;resolution:=optional;version=!',
|
||||
'javax.validation.metadata;resolution:=optional;version=!',
|
||||
// Make javax.enterprise optional and do not reference a version range (because that's what we used to do)
|
||||
'!javax.enterprise*',
|
||||
'javax.enterprise.context.spi;resolution:=optional;version=!',
|
||||
'javax.enterprise.inject.spi;resolution:=optional;version=!',
|
||||
// For JPA, we don't want to target the automatically generated range, but a specific version
|
||||
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
|
||||
// optionals
|
||||
'javax.management;resolution:=optional',
|
||||
|
@ -122,20 +129,28 @@ jar {
|
|||
'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',
|
||||
'javax.inject;resolution:=optional',
|
||||
'net.bytebuddy.*;resolution:=optional',
|
||||
'org.objectweb.jonas_tm;resolution:=optional',
|
||||
'com.ibm.websphere.jtaextensions;resolution:=optional',
|
||||
// We must specify the version explicitly to allow Karaf
|
||||
// to use an older version of JAXB (the only one we can use in Karaf)
|
||||
"javax.xml.bind.*;version=\"${project.jaxbApiVersionOsgiRange}\""
|
||||
|
||||
// // TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer
|
||||
// // uses ClassLoaderServiceImpl.
|
||||
// instruction 'Export-Package',
|
||||
// 'org.hibernate.boot.registry.classloading.internal',
|
||||
// '*'
|
||||
"javax.xml.bind.*;version=\"${project.jaxbApiVersionOsgiRange}\"",
|
||||
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
|
||||
// use it. Without this, the plugin generates [1.2,2).
|
||||
'javax.transaction;version="[1.1,2)"',
|
||||
// Also import every package referenced in the code
|
||||
'*'
|
||||
].join( ',' ),
|
||||
'-exportcontents': [
|
||||
// Legacy resource packages containing XSDs that were traditionally not exported
|
||||
"!org.hibernate.xsd.cfg",
|
||||
"!org.hibernate.xsd.mapping",
|
||||
// TODO: Uncomment once EntityManagerFactoryBuilderImpl no longer uses ClassLoaderServiceImpl.
|
||||
//'org.hibernate.boot.registry.classloading.internal',
|
||||
"*;version=${project.version}"
|
||||
].join( ',' ),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,19 +12,21 @@ dependencies {
|
|||
compile( libraries.jta )
|
||||
}
|
||||
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// The OSGi JAR manifest support does not like a non-existent classes dir,
|
||||
// so make sure we dont use the OSGi one :)
|
||||
// Traditionally we used to not include any manifest attributes in this JAR
|
||||
// except "Manifest-Version"
|
||||
// Since it's a legacy JAR, let's continue that way until it's retired.
|
||||
|
||||
jar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
// Prevent BND from adding manifest attributes automatically
|
||||
bnd( '-nobundles': 'true' )
|
||||
}
|
||||
|
||||
sourcesJar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
}
|
||||
|
||||
javadocJar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
}
|
||||
|
|
|
@ -40,7 +40,9 @@ sourceSets {
|
|||
|
||||
jar {
|
||||
manifest {
|
||||
instructionFirst 'Import-Package',
|
||||
attributes(
|
||||
// BND Plugin instructions (for OSGi):
|
||||
'Import-Package': [
|
||||
// TODO: Shouldn't have to explicitly list the JPA packages, but
|
||||
// the plugin generates them with [1.0,2) versions.
|
||||
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
|
||||
|
@ -49,7 +51,14 @@ jar {
|
|||
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\"",
|
||||
// optionals
|
||||
'javax.naming;resolution:=optional',
|
||||
'org.apache.tools.ant;resolution:=optional'
|
||||
'org.apache.tools.ant;resolution:=optional',
|
||||
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
|
||||
// use it. Without this, the plugin generates [1.2,2).
|
||||
'javax.transaction;version="[1.1,2)"',
|
||||
// Also import every package referenced in the code
|
||||
'*'
|
||||
].join( ',' )
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,18 +6,22 @@ description = '(deprecated - use hibernate-core instead) Support for Java8-speci
|
|||
dependencies {
|
||||
compile( project( ':hibernate-core' ) )
|
||||
}
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// The OSGi JAR manifest support does not like a non-existent classes dir,
|
||||
// so make sure we dont use the OSGi one :)
|
||||
// Traditionally we used to not include any manifest attributes in this JAR
|
||||
// except "Manifest-Version"
|
||||
// Since it's a legacy JAR, let's continue that way until it's retired.
|
||||
|
||||
jar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
// Prevent BND from adding manifest attributes automatically
|
||||
bnd( '-nobundles': 'true' )
|
||||
}
|
||||
|
||||
sourcesJar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
}
|
||||
|
||||
javadocJar {
|
||||
manifest = null
|
||||
manifest.attributes.removeAll { key, value -> key != "Manifest-Version" }
|
||||
}
|
||||
|
|
|
@ -102,13 +102,22 @@ dependencies {
|
|||
|
||||
jar {
|
||||
manifest {
|
||||
instruction 'Bundle-Activator', 'org.hibernate.osgi.HibernateBundleActivator'
|
||||
instruction 'Provide-Capability', 'osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider'
|
||||
instructionFirst 'Import-Package',
|
||||
attributes(
|
||||
// BND Plugin instructions (for OSGi):
|
||||
'Bundle-Activator': 'org.hibernate.osgi.HibernateBundleActivator',
|
||||
'Provide-Capability': 'osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider',
|
||||
'Import-Package': [
|
||||
// TODO: Shouldn't have to explicitly list this, but the plugin
|
||||
// generates it with a [1.0,2) version.
|
||||
"javax.persistence;version=\"${project.jpaVersion.osgiName}\"",
|
||||
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\""
|
||||
"javax.persistence.spi;version=\"${project.jpaVersion.osgiName}\"",
|
||||
// Temporarily support JTA 1.1 -- Karaf and other frameworks still
|
||||
// use it. Without this, the plugin generates [1.2,2).
|
||||
'javax.transaction;version="[1.1,2)"',
|
||||
// Also import every package referenced in the code
|
||||
'*'
|
||||
].join( ',' )
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue