Skip to content

Commit 27fa5a6

Browse files
committed
MergedProperties POC for sharing properties between projects
This is an alternate way to share dependency versions between api & server to version catalogs (#9974), which have the problem where any catalog change that impacts the generated accessor ABI will cause the entire paperweight pipeline to run again (which makes it impractical for our use case) If we decide to go forward with this, will need to merge PaperMC/paperweight#226 and make a paperweight release first.
1 parent 2182d47 commit 27fa5a6

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
java
66
`maven-publish`
77
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
8-
id("io.papermc.paperweight.core") version "1.5.10"
8+
id("io.papermc.paperweight.core") version "1.5.11-SNAPSHOT"
99
}
1010

1111
allprojects {
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
3+
Date: Tue, 28 Nov 2023 19:28:45 -0700
4+
Subject: [PATCH] MergedProperties POC
5+
6+
7+
diff --git a/build.gradle.kts b/build.gradle.kts
8+
index e827ee211e3c65dc68ac5867fd8476639df63645..7456c41ccf126790ec11652d244710e2b797f237 100644
9+
--- a/build.gradle.kts
10+
+++ b/build.gradle.kts
11+
@@ -1,3 +1,5 @@
12+
+import io.papermc.paperweight.util.MergedProperties
13+
+
14+
plugins {
15+
`java-library`
16+
`maven-publish`
17+
@@ -9,11 +11,13 @@ java {
18+
withJavadocJar()
19+
}
20+
21+
-val annotationsVersion = "24.0.1"
22+
-val bungeeCordChatVersion = "1.20-R0.1"
23+
-val adventureVersion = "4.14.0"
24+
-val slf4jVersion = "1.8.0-beta4"
25+
-val log4jVersion = "2.17.1"
26+
+val versions = MergedProperties.fromAllProjects(project, "versions.properties")
27+
+val annotationsVersion by versions
28+
+val bungeeCordChatVersion by versions
29+
+val adventureVersion by versions
30+
+val slf4jVersion by versions
31+
+val log4jVersion by versions
32+
+val asmVersion by versions
33+
val apiAndDocs: Configuration by configurations.creating {
34+
attributes {
35+
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
36+
@@ -48,8 +52,8 @@ dependencies {
37+
api("org.apache.logging.log4j:log4j-api:$log4jVersion")
38+
api("org.slf4j:slf4j-api:$slf4jVersion")
39+
40+
- implementation("org.ow2.asm:asm:9.4")
41+
- implementation("org.ow2.asm:asm-commons:9.4")
42+
+ implementation("org.ow2.asm:asm:$asmVersion")
43+
+ implementation("org.ow2.asm:asm-commons:$asmVersion")
44+
// Paper end
45+
46+
api("org.apache.maven:maven-resolver-provider:3.8.5")
47+
@@ -71,7 +75,7 @@ dependencies {
48+
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
49+
testImplementation("org.hamcrest:hamcrest:2.2")
50+
testImplementation("org.mockito:mockito-core:5.5.0")
51+
- testImplementation("org.ow2.asm:asm-tree:9.5")
52+
+ testImplementation("org.ow2.asm:asm-tree:$asmVersion")
53+
}
54+
55+
// Paper start
56+
diff --git a/versions.properties b/versions.properties
57+
new file mode 100644
58+
index 0000000000000000000000000000000000000000..4e284ef8c083571a6655c9beeaaa20bd554b8395
59+
--- /dev/null
60+
+++ b/versions.properties
61+
@@ -0,0 +1,6 @@
62+
+annotationsVersion = 24.0.1
63+
+bungeeCordChatVersion = 1.20-R0.1
64+
+adventureVersion = 4.14.0
65+
+slf4jVersion = 1.8.0-beta4
66+
+log4jVersion = 2.17.1
67+
+asmVersion = 9.6
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
3+
Date: Tue, 28 Nov 2023 19:28:37 -0700
4+
Subject: [PATCH] MergedProperties POC
5+
6+
7+
diff --git a/build.gradle.kts b/build.gradle.kts
8+
index 64479f0a892d6847f987d844efe282a6080d607b..655e72cc8500767043875884589423b33de96538 100644
9+
--- a/build.gradle.kts
10+
+++ b/build.gradle.kts
11+
@@ -12,13 +12,19 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
12+
}
13+
val alsoShade: Configuration by configurations.creating
14+
15+
+val versions = MergedProperties.fromAllProjects(project, "versions.properties")
16+
+val adventureVersion by versions
17+
+val log4jVersion by versions
18+
+val mappingIoVersion by versions
19+
+val asmVersion by versions
20+
+
21+
dependencies {
22+
implementation(project(":paper-api"))
23+
implementation(project(":paper-mojangapi"))
24+
// Paper start
25+
implementation("org.jline:jline-terminal-jansi:3.21.0")
26+
implementation("net.minecrell:terminalconsoleappender:1.3.0")
27+
- implementation("net.kyori:adventure-text-serializer-ansi:4.14.0") // Keep in sync with adventureVersion from Paper-API build file
28+
+ implementation("net.kyori:adventure-text-serializer-ansi:$adventureVersion")
29+
implementation("net.kyori:ansi:1.0.3") // Manually bump beyond above transitive dep
30+
/*
31+
Required to add the missing Log4j2Plugins.dat file from log4j-core
32+
@@ -26,18 +32,18 @@ dependencies {
33+
all its classes to check if they are plugins.
34+
Scanning takes about 1-2 seconds so adding this speeds up the server start.
35+
*/
36+
- implementation("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - implementation
37+
- log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - Needed to generate meta for our Log4j plugins
38+
+ implementation("org.apache.logging.log4j:log4j-core:$log4jVersion") // Paper - implementation
39+
+ log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:$log4jVersion") // Paper - Needed to generate meta for our Log4j plugins
40+
runtimeOnly(log4jPlugins.output)
41+
alsoShade(log4jPlugins.output)
42+
implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
43+
// Paper end
44+
- implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
45+
- implementation("org.ow2.asm:asm:9.5")
46+
- implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation
47+
+ implementation("org.apache.logging.log4j:log4j-iostreams:$log4jVersion") // Paper - remove exclusion
48+
+ implementation("org.ow2.asm:asm:$asmVersion")
49+
+ implementation("org.ow2.asm:asm-commons:$asmVersion") // Paper - ASM event executor generation
50+
implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files
51+
implementation("commons-lang:commons-lang:2.6")
52+
- implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation
53+
+ implementation("net.fabricmc:mapping-io:$mappingIoVersion") // Paper - needed to read mappings for stacktrace deobfuscation
54+
runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1")
55+
runtimeOnly("com.mysql:mysql-connector-j:8.1.0")
56+
runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
57+
diff --git a/versions.properties b/versions.properties
58+
new file mode 100644
59+
index 0000000000000000000000000000000000000000..ecdcc6735c3f6e5205a57740bafdbf3c0fbfd36c
60+
--- /dev/null
61+
+++ b/versions.properties
62+
@@ -0,0 +1,2 @@
63+
+log4jVersion = 2.19.0
64+
+mappingIoVersion = 0.5.0

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import java.util.Locale
33
pluginManagement {
44
repositories {
55
gradlePluginPortal()
6+
mavenLocal()
67
maven("https://repo.papermc.io/repository/maven-public/")
78
}
89
}

0 commit comments

Comments
 (0)