Skip to content

Commit c5e95e5

Browse files
committed
HHH-14817 Make sure *-jakarta modules generate source and javadoc jars
1 parent 9554ab9 commit c5e95e5

File tree

4 files changed

+360
-9
lines changed

4 files changed

+360
-9
lines changed

hibernate-core-jakarta/hibernate-core-jakarta.gradle

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ processResources.enabled false
9494
compileTestJava.enabled false
9595
processTestResources.enabled false
9696
jar.enabled false
97+
javadocJar.enabled false
98+
sourcesJar.enabled false
9799

98100
ext {
99101
transformedJarName = project(':hibernate-core').tasks.jar.archiveFileName.get().replaceAll( 'hibernate-core', 'hibernate-core-jakarta' )
@@ -123,6 +125,26 @@ task transformJar(type: JakartaJarTransformation) {
123125
targetJar tasks.jar.archiveFile.get().asFile
124126
}
125127

128+
task transformSourcesJar(type: JakartaJarTransformation) {
129+
description 'Transforms the hibernate-core sources jar using the JakartaTransformer tool'
130+
131+
dependsOn project(':hibernate-core').tasks.sourcesJar
132+
mustRunAfter project(':hibernate-core').tasks.sourcesJar
133+
134+
sourceJar project(':hibernate-core').tasks.sourcesJar.archiveFile
135+
targetJar tasks.sourcesJar.archiveFile.get().asFile
136+
}
137+
138+
task transformJavadocJar(type: JakartaJarTransformation) {
139+
description 'Transforms the hibernate-core javadoc jar using the JakartaTransformer tool'
140+
141+
dependsOn project(':hibernate-core').tasks.javadocJar
142+
mustRunAfter project(':hibernate-core').tasks.javadocJar
143+
144+
sourceJar project(':hibernate-core').tasks.javadocJar.archiveFile
145+
targetJar tasks.javadocJar.archiveFile.get().asFile
146+
}
147+
126148
configurations {
127149
[apiElements, runtimeElements].each {
128150
it.outgoing.artifacts.removeIf {
@@ -131,6 +153,12 @@ configurations {
131153
it.outgoing.artifact(tasks.transformJar.targetJar) {
132154
builtBy tasks.transformJar
133155
}
156+
it.outgoing.artifact(tasks.transformSourcesJar.targetJar) {
157+
builtBy tasks.transformSourcesJar
158+
}
159+
it.outgoing.artifact(tasks.transformJavadocJar.targetJar) {
160+
builtBy tasks.transformJavadocJar
161+
}
134162
}
135163
}
136164

hibernate-envers-jakarta/hibernate-envers-jakarta.gradle

Lines changed: 110 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import org.apache.tools.ant.filters.ReplaceTokens
2+
import javax.inject.Inject
23

34
/*
45
* Hibernate, Relational Persistence for Idiomatic Java
@@ -12,13 +13,22 @@ description = 'Hibernate\'s entity version (audit/history) support Jakarta editi
1213
apply from: rootProject.file( 'gradle/published-java-module.gradle' )
1314

1415
configurations {
15-
jakartaeeTransformJars
16+
jakartaeeTransformTool
1617
}
1718

19+
// we do not want the much of the normal java plugin's behavior
20+
compileJava.enabled false
21+
processResources.enabled false
22+
compileTestJava.enabled false
23+
processTestResources.enabled false
24+
jar.enabled false
25+
javadocJar.enabled false
26+
sourcesJar.enabled false
27+
1828
dependencies {
1929
compile( project( ':hibernate-core-jakarta' ) )
2030

21-
jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1',
31+
jakartaeeTransformTool 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1',
2232
'commons-cli:commons-cli:1.4',
2333
'org.slf4j:slf4j-simple:1.7.30',
2434
'org.slf4j:slf4j-api:1.7.26',
@@ -64,14 +74,61 @@ jar {
6474
}
6575

6676
javaexec {
67-
classpath configurations.jakartaeeTransformJars
77+
classpath configurations.jakartaeeTransformTool
6878
main = 'org.eclipse.transformer.jakarta.JakartaTransformer'
6979
args = transformerArgs
7080
}
7181
}
7282
}
7383
}
7484

85+
task transformJar(type: JakartaJarTransformation) {
86+
description 'Transforms the hibernate-envers jar using the JakartaTransformer tool'
87+
88+
dependsOn project(':hibernate-envers').tasks.jar
89+
mustRunAfter project(':hibernate-envers').tasks.jar
90+
91+
sourceJar project(':hibernate-envers').tasks.jar.archiveFile
92+
targetJar tasks.jar.archiveFile.get().asFile
93+
}
94+
95+
task transformSourcesJar(type: JakartaJarTransformation) {
96+
description 'Transforms the hibernate-envers sources jar using the JakartaTransformer tool'
97+
98+
dependsOn project(':hibernate-envers').tasks.sourcesJar
99+
mustRunAfter project(':hibernate-envers').tasks.sourcesJar
100+
101+
sourceJar project(':hibernate-envers').tasks.sourcesJar.archiveFile
102+
targetJar tasks.sourcesJar.archiveFile.get().asFile
103+
}
104+
105+
task transformJavadocJar(type: JakartaJarTransformation) {
106+
description 'Transforms the hibernate-envers javadoc jar using the JakartaTransformer tool'
107+
108+
dependsOn project(':hibernate-envers').tasks.javadocJar
109+
mustRunAfter project(':hibernate-envers').tasks.javadocJar
110+
111+
sourceJar project(':hibernate-envers').tasks.javadocJar.archiveFile
112+
targetJar tasks.javadocJar.archiveFile.get().asFile
113+
}
114+
115+
configurations {
116+
[apiElements, runtimeElements].each {
117+
it.outgoing.artifacts.removeIf {
118+
it.buildDependencies.getDependencies(null).contains(jar)
119+
}
120+
it.outgoing.artifact(tasks.transformJar.targetJar) {
121+
builtBy tasks.transformJar
122+
}
123+
it.outgoing.artifact(tasks.transformSourcesJar.targetJar) {
124+
builtBy tasks.transformSourcesJar
125+
}
126+
it.outgoing.artifact(tasks.transformJavadocJar.targetJar) {
127+
builtBy tasks.transformJavadocJar
128+
}
129+
}
130+
}
131+
75132
task unpackTestJar(type: Copy) {
76133
dependsOn jar
77134
fileTree(project.buildDir).matching { include 'libs/*-test.jar' }.each {
@@ -98,3 +155,53 @@ test {
98155
jvmArgs( ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] )
99156
}
100157
}
158+
159+
@CacheableTask
160+
abstract class JakartaJarTransformation extends DefaultTask {
161+
private final RegularFileProperty sourceJar;
162+
private final RegularFileProperty targetJar;
163+
164+
@Inject
165+
JakartaJarTransformation(ObjectFactory objectFactory) {
166+
sourceJar = objectFactory.fileProperty();
167+
targetJar = objectFactory.fileProperty();
168+
}
169+
170+
@InputFile
171+
@PathSensitive( PathSensitivity.RELATIVE )
172+
RegularFileProperty getSourceJar() {
173+
return sourceJar;
174+
}
175+
176+
void sourceJar(Object fileReference) {
177+
sourceJar.set( project.file( fileReference ) )
178+
}
179+
180+
@OutputFile
181+
RegularFileProperty getTargetJar() {
182+
return targetJar;
183+
}
184+
185+
void targetJar(Object fileReference) {
186+
targetJar.set( project.file( fileReference ) )
187+
}
188+
189+
@TaskAction
190+
void transform() {
191+
project.javaexec( new Action<JavaExecSpec>() {
192+
@Override
193+
void execute(JavaExecSpec javaExecSpec) {
194+
javaExecSpec.classpath( getProject().getConfigurations().getByName( "jakartaeeTransformTool" ) );
195+
javaExecSpec.setMain( "org.eclipse.transformer.jakarta.JakartaTransformer" );
196+
javaExecSpec.args(
197+
sourceJar.get().getAsFile().getAbsolutePath(),
198+
targetJar.get().getAsFile().getAbsolutePath(),
199+
"-q",
200+
"-tr", getProject().getRootProject().file( "rules/jakarta-renames.properties" ).getAbsolutePath(),
201+
"-tv", getProject().getRootProject().file( "rules/jakarta-versions.properties" ).getAbsolutePath(),
202+
"-td", getProject().getRootProject().file( "rules/jakarta-direct.properties" ).getAbsolutePath()
203+
);
204+
}
205+
});
206+
}
207+
}

hibernate-testing-jakarta/hibernate-testing-jakarta.gradle

Lines changed: 111 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import javax.inject.Inject
2+
13
/*
24
* Hibernate, Relational Persistence for Idiomatic Java
35
*
@@ -10,9 +12,18 @@ description = 'Support for testing Hibernate ORM Jakarta functionality'
1012
apply from: rootProject.file( 'gradle/published-java-module.gradle' )
1113

1214
configurations {
13-
jakartaeeTransformJars
15+
jakartaeeTransformTool
1416
}
1517

18+
// we do not want the much of the normal java plugin's behavior
19+
compileJava.enabled false
20+
processResources.enabled false
21+
compileTestJava.enabled false
22+
processTestResources.enabled false
23+
jar.enabled false
24+
javadocJar.enabled false
25+
sourcesJar.enabled false
26+
1627
dependencies {
1728
compile project( ':hibernate-core-jakarta' )
1829
compile( libraries.jakarta_jta )
@@ -29,7 +40,7 @@ dependencies {
2940
transitive=false;
3041
}
3142

32-
jakartaeeTransformJars 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1',
43+
jakartaeeTransformTool 'biz.aQute.bnd:biz.aQute.bnd.transform:5.1.1',
3344
'commons-cli:commons-cli:1.4',
3445
'org.slf4j:slf4j-simple:1.7.30',
3546
'org.slf4j:slf4j-api:1.7.26',
@@ -70,10 +81,107 @@ jar {
7081
}
7182

7283
javaexec {
73-
classpath configurations.jakartaeeTransformJars
84+
classpath configurations.jakartaeeTransformTool
7485
main = 'org.eclipse.transformer.jakarta.JakartaTransformer'
7586
args = transformerArgs
7687
}
7788
}
7889
}
7990
}
91+
92+
task transformJar(type: JakartaJarTransformation) {
93+
description 'Transforms the hibernate-testing jar using the JakartaTransformer tool'
94+
95+
dependsOn project(':hibernate-testing').tasks.jar
96+
mustRunAfter project(':hibernate-testing').tasks.jar
97+
98+
sourceJar project(':hibernate-testing').tasks.jar.archiveFile
99+
targetJar tasks.jar.archiveFile.get().asFile
100+
}
101+
102+
task transformSourcesJar(type: JakartaJarTransformation) {
103+
description 'Transforms the hibernate-testing sources jar using the JakartaTransformer tool'
104+
105+
dependsOn project(':hibernate-testing').tasks.sourcesJar
106+
mustRunAfter project(':hibernate-testing').tasks.sourcesJar
107+
108+
sourceJar project(':hibernate-testing').tasks.sourcesJar.archiveFile
109+
targetJar tasks.sourcesJar.archiveFile.get().asFile
110+
}
111+
112+
task transformJavadocJar(type: JakartaJarTransformation) {
113+
description 'Transforms the hibernate-testing javadoc jar using the JakartaTransformer tool'
114+
115+
dependsOn project(':hibernate-testing').tasks.javadocJar
116+
mustRunAfter project(':hibernate-testing').tasks.javadocJar
117+
118+
sourceJar project(':hibernate-testing').tasks.javadocJar.archiveFile
119+
targetJar tasks.javadocJar.archiveFile.get().asFile
120+
}
121+
122+
configurations {
123+
[apiElements, runtimeElements].each {
124+
it.outgoing.artifacts.removeIf {
125+
it.buildDependencies.getDependencies(null).contains(jar)
126+
}
127+
it.outgoing.artifact(tasks.transformJar.targetJar) {
128+
builtBy tasks.transformJar
129+
}
130+
it.outgoing.artifact(tasks.transformSourcesJar.targetJar) {
131+
builtBy tasks.transformSourcesJar
132+
}
133+
it.outgoing.artifact(tasks.transformJavadocJar.targetJar) {
134+
builtBy tasks.transformJavadocJar
135+
}
136+
}
137+
}
138+
139+
@CacheableTask
140+
abstract class JakartaJarTransformation extends DefaultTask {
141+
private final RegularFileProperty sourceJar;
142+
private final RegularFileProperty targetJar;
143+
144+
@Inject
145+
JakartaJarTransformation(ObjectFactory objectFactory) {
146+
sourceJar = objectFactory.fileProperty();
147+
targetJar = objectFactory.fileProperty();
148+
}
149+
150+
@InputFile
151+
@PathSensitive( PathSensitivity.RELATIVE )
152+
RegularFileProperty getSourceJar() {
153+
return sourceJar;
154+
}
155+
156+
void sourceJar(Object fileReference) {
157+
sourceJar.set( project.file( fileReference ) )
158+
}
159+
160+
@OutputFile
161+
RegularFileProperty getTargetJar() {
162+
return targetJar;
163+
}
164+
165+
void targetJar(Object fileReference) {
166+
targetJar.set( project.file( fileReference ) )
167+
}
168+
169+
@TaskAction
170+
void transform() {
171+
project.javaexec( new Action<JavaExecSpec>() {
172+
@Override
173+
void execute(JavaExecSpec javaExecSpec) {
174+
javaExecSpec.classpath( getProject().getConfigurations().getByName( "jakartaeeTransformTool" ) );
175+
javaExecSpec.setMain( "org.eclipse.transformer.jakarta.JakartaTransformer" );
176+
javaExecSpec.args(
177+
sourceJar.get().getAsFile().getAbsolutePath(),
178+
targetJar.get().getAsFile().getAbsolutePath(),
179+
"-q",
180+
"-tr", getProject().getRootProject().file( "rules/jakarta-renames.properties" ).getAbsolutePath(),
181+
"-tv", getProject().getRootProject().file( "rules/jakarta-versions.properties" ).getAbsolutePath(),
182+
"-td", getProject().getRootProject().file( "rules/jakarta-direct.properties" ).getAbsolutePath()
183+
);
184+
}
185+
});
186+
}
187+
}

0 commit comments

Comments
 (0)