aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--paper-server/build.gradle.kts57
1 files changed, 47 insertions, 10 deletions
diff --git a/paper-server/build.gradle.kts b/paper-server/build.gradle.kts
index ef6e10b495..43be6233eb 100644
--- a/paper-server/build.gradle.kts
+++ b/paper-server/build.gradle.kts
@@ -1,3 +1,4 @@
+import io.papermc.paperweight.attribute.DevBundleOutput
import io.papermc.paperweight.util.*
import java.time.Instant
@@ -37,25 +38,66 @@ paperweight {
spigot {
buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42"
- packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment"
+ packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment
}
}
tasks.generateDevelopmentBundle {
- apiCoordinates = "io.papermc.paper:paper-api"
libraryRepositories.addAll(
"https://repo.maven.apache.org/maven2/",
paperMavenPublicUrl,
)
}
+abstract class SoftwareComponentFactoryProvider {
+ @get:Inject
+ abstract val factory: SoftwareComponentFactory
+}
+val provider = objects.newInstance<SoftwareComponentFactoryProvider>()
+
publishing {
if (project.providers.gradleProperty("publishDevBundle").isPresent) {
- publications.create<MavenPublication>("devBundle") {
- artifact(tasks.generateDevelopmentBundle) {
- artifactId = "dev-bundle"
+ val devBundleComponent = provider.factory.adhoc("devBundle")
+ components.add(devBundleComponent)
+
+ val devBundle = configurations.consumable("devBundle") {
+ attributes.attribute(DevBundleOutput.ATTRIBUTE, objects.named(DevBundleOutput.ZIP))
+ outgoing.artifact(tasks.generateDevelopmentBundle.flatMap { it.devBundleFile })
+ }
+ devBundleComponent.addVariantsFromConfiguration(devBundle.get()) {}
+
+ val runtime = configurations.consumable("serverRuntimeClasspath") {
+ attributes.attribute(DevBundleOutput.ATTRIBUTE, objects.named(DevBundleOutput.SERVER_DEPENDENCIES))
+ attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ extendsFrom(configurations.runtimeClasspath.get())
+ }
+ devBundleComponent.addVariantsFromConfiguration(runtime.get()) {
+ mapToMavenScope("runtime")
+ }
+
+ val compile = configurations.consumable("serverCompileClasspath") {
+ attributes.attribute(DevBundleOutput.ATTRIBUTE, objects.named(DevBundleOutput.SERVER_DEPENDENCIES))
+ attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_API))
+ extendsFrom(configurations.compileClasspath.get())
+ }
+ devBundleComponent.addVariantsFromConfiguration(compile.get()) {
+ mapToMavenScope("compile")
+ }
+
+ tasks.withType(GenerateMavenPom::class).configureEach {
+ doLast {
+ val text = destination.readText()
+ // Remove dependencies from pom, dev bundle is designed for gradle module metadata consumers
+ destination.writeText(
+ text.substringBefore("<dependencies>") + text.substringAfter("</dependencies>")
+ )
}
}
+
+ publications.create<MavenPublication>("devBundle") {
+ artifactId = "dev-bundle"
+ from(devBundleComponent)
+ }
}
}
@@ -168,11 +210,6 @@ tasks.compileTestJava {
}
// Paper end
-publishing {
- publications.create<MavenPublication>("maven") {
- }
-}
-
// Paper start
val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) {
badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;")