Skip to content

Commit 543b754

Browse files
committed
Add module descriptor inside multi-release jar for spy and driver
1 parent ee65e8a commit 543b754

File tree

10 files changed

+166
-6
lines changed

10 files changed

+166
-6
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ subprojects {
3838
mavenCentral()
3939
}
4040

41+
extra["moduleDescriptor"] = false
4142
}
4243

4344
val isSnapshot: Boolean by project

driver/build.gradle.kts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
21
plugins {
32
`java-library`
43
id("com.adarshr.test-logger") version Versions.testLoggerPlugin
54
}
65

76
description = "PostgreSQL JDBC - NG - Driver"
87

8+
sourceSets.create("java11") {
9+
java.srcDir("src/main/java")
10+
java.srcDir("src/main/java11")
11+
java.srcDir("$buildDir/generated/sources/annotationProcessor/java/java11")
12+
}
913

1014
dependencies {
1115

@@ -29,6 +33,8 @@ dependencies {
2933

3034
}
3135

36+
project.extra["moduleDescriptor"] = true
37+
3238
apply {
3339
from("src/build/compile.gradle.kts")
3440
from("src/build/checkstyle.gradle.kts")
@@ -37,11 +43,33 @@ apply {
3743
from("$rootDir/shared/src/build/publishing.gradle.kts")
3844
}
3945

46+
// Gradle has a bug which prevents using --processor-module-path
47+
// So, we need to re-use the generated sources from compileJava
48+
tasks.create<Copy>("generate-java11-sources") {
49+
from("$buildDir/generated/sources/annotationProcessor/java/main")
50+
into("$buildDir/generated/sources/annotationProcessor/java/java11")
51+
class Filter : Transformer<String, String> {
52+
53+
override fun transform(line: String): String {
54+
return line.replace("javax.annotation.Generated", "javax.annotation.processing.Generated")
55+
}
56+
}
57+
filter(Filter())
58+
}
4059

4160
tasks {
4261
compileJava {
4362
outputs.dir("$buildDir/generated/docs")
4463
}
64+
named("generate-java11-sources") {
65+
dependsOn(project.tasks.named("compileJava"))
66+
}
67+
named<JavaCompile>("compileJava11Java") {
68+
dependsOn(project.tasks.named("generate-java11-sources"))
69+
}
70+
classes {
71+
dependsOn(project.tasks.named("compileJava11Java"))
72+
}
4573
processResources {
4674
expand(project.properties)
4775
}

driver/src/build/checkstyle.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ configure<CheckstyleExtension> {
1515

1616
tasks.named<Checkstyle>("checkstyleMain") { exclude("**/guava/**") }
1717
tasks.named<Checkstyle>("checkstyleTest") { exclude("**/jdbc/shared/**") }
18+
tasks.named<Checkstyle>("checkstyleJava11") {
19+
onlyIf { false }
20+
}

driver/src/build/compile.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ tasks.named<JavaCompile>("compileJava") {
99
options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/annotationProcessor/java/main")
1010
}
1111

12+
tasks.named<JavaCompile>("compileJava11Java") {
13+
options.compilerArgs.add("-Adoc.dir=$buildDir/generated/docs-java11/")
14+
options.isDeprecation = true
15+
options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/annotationProcessor/java/java11")
16+
}
17+
1218
tasks.named<JavaCompile>("compileTestJava") {
1319
options.compilerArgs.add("-parameters")
1420
options.isDeprecation = true
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
module com.impossibl.postgres {
2+
requires transitive com.impossibl.jdbc.spy;
3+
4+
requires io.netty.buffer;
5+
requires io.netty.codec;
6+
requires io.netty.common;
7+
requires io.netty.handler;
8+
requires io.netty.transport;
9+
requires static io.netty.transport.epoll;
10+
requires static io.netty.transport.kqueue;
11+
requires static io.netty.transport.unix.common;
12+
13+
requires static java.compiler;
14+
requires transitive java.logging;
15+
requires transitive java.naming;
16+
requires java.security.sasl;
17+
requires transitive java.sql;
18+
requires transitive java.transaction.xa;
19+
requires java.xml;
20+
21+
exports com.impossibl.postgres.api.data;
22+
exports com.impossibl.postgres.api.jdbc;
23+
exports com.impossibl.postgres.jdbc;
24+
exports com.impossibl.postgres.jdbc.xa;
25+
26+
uses com.impossibl.postgres.system.procs.ProcProvider;
27+
28+
provides com.impossibl.postgres.system.procs.ProcProvider with
29+
com.impossibl.postgres.system.procs.ACLItems,
30+
com.impossibl.postgres.system.procs.Arrays,
31+
com.impossibl.postgres.system.procs.BitMods,
32+
com.impossibl.postgres.system.procs.Bits,
33+
com.impossibl.postgres.system.procs.Bools,
34+
com.impossibl.postgres.system.procs.Boxes,
35+
com.impossibl.postgres.system.procs.Bytes,
36+
com.impossibl.postgres.system.procs.Cidrs,
37+
com.impossibl.postgres.system.procs.Circles,
38+
com.impossibl.postgres.system.procs.Dates,
39+
com.impossibl.postgres.system.procs.Domains,
40+
com.impossibl.postgres.system.procs.Float4s,
41+
com.impossibl.postgres.system.procs.Float8s,
42+
com.impossibl.postgres.system.procs.HStores,
43+
com.impossibl.postgres.system.procs.Inets,
44+
com.impossibl.postgres.system.procs.Int2s,
45+
com.impossibl.postgres.system.procs.Int2Vectors,
46+
com.impossibl.postgres.system.procs.Int4s,
47+
com.impossibl.postgres.system.procs.Int8s,
48+
com.impossibl.postgres.system.procs.Intervals,
49+
com.impossibl.postgres.system.procs.Jsons,
50+
com.impossibl.postgres.system.procs.Lines,
51+
com.impossibl.postgres.system.procs.LSegs,
52+
com.impossibl.postgres.system.procs.MacAddrs,
53+
com.impossibl.postgres.system.procs.MacAddr8s,
54+
com.impossibl.postgres.system.procs.Moneys,
55+
com.impossibl.postgres.system.procs.Names,
56+
com.impossibl.postgres.system.procs.NumericMods,
57+
com.impossibl.postgres.system.procs.Numerics,
58+
com.impossibl.postgres.system.procs.Oids,
59+
com.impossibl.postgres.system.procs.OidVectors,
60+
com.impossibl.postgres.system.procs.Paths,
61+
com.impossibl.postgres.system.procs.Points,
62+
com.impossibl.postgres.system.procs.Polygons,
63+
com.impossibl.postgres.system.procs.Ranges,
64+
com.impossibl.postgres.system.procs.Records,
65+
com.impossibl.postgres.system.procs.RefCursors,
66+
com.impossibl.postgres.system.procs.Strings,
67+
com.impossibl.postgres.system.procs.Tids,
68+
com.impossibl.postgres.system.procs.TimeMods,
69+
com.impossibl.postgres.system.procs.TimestampMods,
70+
com.impossibl.postgres.system.procs.TimestampsWithoutTZ,
71+
com.impossibl.postgres.system.procs.TimestampsWithTZ,
72+
com.impossibl.postgres.system.procs.TimesWithoutTZ,
73+
com.impossibl.postgres.system.procs.TimesWithTZ,
74+
com.impossibl.postgres.system.procs.UInt4s,
75+
com.impossibl.postgres.system.procs.UUIDs,
76+
com.impossibl.postgres.system.procs.XMLs;
77+
provides java.sql.Driver with
78+
com.impossibl.postgres.jdbc.PGDriver;
79+
}

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
systemProp.org.gradle.java.compile-classpath-packaging=true

shared/src/build/compile-java.gradle.kts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ configure<JavaPluginExtension> {
66
}
77
}
88

9-
val javaToolchains = extensions.getByName("javaToolchains") as JavaToolchainService
9+
tasks.named<JavaCompile>("compileJava") {
10+
val targetVersion: Int = Integer.parseInt(Versions.javaTarget.majorVersion)
11+
options.release.set(targetVersion)
12+
}
13+
14+
if (project.extra["moduleDescriptor"] as Boolean) {
15+
tasks.named<JavaCompile>("compileJava11Java") {
16+
options.release.set(11)
17+
options.javaModuleVersion.set(project.version as String)
18+
}
1019

11-
tasks.withType<JavaCompile>().configureEach {
12-
javaCompiler.set(javaToolchains.compilerFor {
13-
languageVersion.set(JavaLanguageVersion.of(Versions.javaTarget.majorVersion))
14-
})
20+
configurations["java11CompileClasspath"].extendsFrom(configurations["compileClasspath"])
1521
}

shared/src/build/packaging.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ val jar = tasks.named<Jar>("jar") {
2525
"Created-By" to "${System.getProperty("java.version")} (${System.getProperty("java.vendor")})"
2626
)
2727
}
28+
if (project.extra["moduleDescriptor"] as Boolean) {
29+
manifest {
30+
attributes("Multi-Release" to "true")
31+
}
32+
into("META-INF/versions/11") {
33+
from(project.the<SourceSetContainer>()["java11"].output)
34+
include("module-info.class")
35+
}
36+
}
2837
}
2938

3039

spy/build.gradle.kts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,19 @@ dependencies {
1313
}
1414

1515
val genDir = file("$buildDir/generated")
16+
val gen11Dir = file("$buildDir/generated-java11")
1617

1718
sourceSets {
1819
main {
1920
java.srcDirs(genDir)
21+
java.include("com/impossibl/**")
2022
}
2123
}
24+
sourceSets.create("java11") {
25+
java.srcDir("src/main/java")
26+
java.srcDir(genDir)
27+
java.srcDir("src/main/java11")
28+
}
2229

2330
tasks {
2431

@@ -32,18 +39,34 @@ tasks {
3239
SpyGen().generateTo(genDir)
3340
}
3441
}
42+
val gen11Task = register("generator11") {
43+
outputs.dir(gen11Dir)
44+
45+
doLast {
46+
gen11Dir.mkdirs()
47+
SpyGen().generateTo(gen11Dir)
48+
}
49+
}
3550

3651
compileJava {
3752
dependsOn(genTask)
3853
options.isDeprecation = true
3954
}
4055

56+
val compileJavaTask = named("compileJava")
57+
named<JavaCompile>("compileJava11Java") {
58+
dependsOn(compileJavaTask)
59+
options.isDeprecation = true
60+
}
61+
4162
javadoc {
4263
dependsOn(genTask)
4364
}
4465

4566
}
4667

68+
project.extra["moduleDescriptor"] = true
69+
4770
apply {
4871
from("$rootDir/shared/src/build/compile-java.gradle.kts")
4972
from("$rootDir/shared/src/build/packaging.gradle.kts")
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module com.impossibl.jdbc.spy {
2+
requires transitive java.sql;
3+
exports com.impossibl.jdbc.spy;
4+
}

0 commit comments

Comments
 (0)