From ff53708a16b6beed9c4bef4bcb2aedf2d9ad8d5e Mon Sep 17 00:00:00 2001 From: Siphalor Date: Sun, 12 Oct 2025 19:41:11 +0200 Subject: [PATCH] [build] project structure and publishing improvements --- build.gradle.kts | 4 --- buildSrc/build.gradle.kts | 4 --- buildSrc/helpers/build.gradle.kts | 4 --- buildSrc/settings.gradle.kts | 6 ++++ .../de.siphalor.tweed5.base-module.gradle.kts | 9 +---- ...lor.tweed5.expanded-sources-jar.gradle.kts | 1 + ...halor.tweed5.minecraft.mod.base.gradle.kts | 3 +- ...alor.tweed5.minecraft.mod.dummy.gradle.kts | 1 - .../de.siphalor.tweed5.publishing.gradle.kts | 33 +++++++++++++++++++ .../de.siphalor.tweed5.test-utils.gradle.kts | 4 --- minecraft/tweed5-bundle/build.gradle.kts | 21 ++++++++++-- settings.gradle.kts | 6 ++++ 12 files changed, 68 insertions(+), 28 deletions(-) create mode 100644 buildSrc/src/main/kotlin/de.siphalor.tweed5.publishing.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index 5b2553f..75fc34c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,10 +6,6 @@ plugins { group = "de.siphalor.tweed5" version = properties["version"]!! -repositories { - mavenCentral() -} - dependencies { rootProject.subprojects.forEach { subproject -> subproject.plugins.withId("jacoco") { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 84492e6..694bf68 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -2,10 +2,6 @@ plugins { `kotlin-dsl` } -repositories { - gradlePluginPortal() -} - dependencies { implementation(project(":helpers")) } diff --git a/buildSrc/helpers/build.gradle.kts b/buildSrc/helpers/build.gradle.kts index bf7b9ab..ab0830d 100644 --- a/buildSrc/helpers/build.gradle.kts +++ b/buildSrc/helpers/build.gradle.kts @@ -3,10 +3,6 @@ plugins { `java-gradle-plugin` } -repositories { - gradlePluginPortal() -} - gradlePlugin { plugins.register("minecraftModComponent") { id = "de.siphalor.tweed5.minecraft.mod.component" diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index bc7d0dc..f83b3fa 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -2,6 +2,12 @@ plugins { id("dev.panuszewski.typesafe-conventions") version "0.7.3" } +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} + include("helpers") rootProject.name = "tweed5-conventions" diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts index 700d9ef..7a0a1c0 100644 --- a/buildSrc/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts @@ -2,24 +2,17 @@ plugins { java `java-library` jacoco - `maven-publish` alias(libs.plugins.lombok) + id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.local-runtime-only") id("de.siphalor.tweed5.expanded-sources-jar") } -group = rootProject.group -version = rootProject.version - java { sourceCompatibility = JavaVersion.toVersion(libs.versions.java.main.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.java.main.get()) } -repositories { - mavenCentral() -} - val testAgent = configurations.dependencyScope("mockitoAgent") val testAgentClasspath = configurations.resolvable("testAgentClasspath") { isTransitive = false diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts index f698b76..1a715d1 100644 --- a/buildSrc/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts @@ -7,6 +7,7 @@ plugins { } val expandedSourcesElements = configurations.consumable("expandedSourcesElements") { + extendsFrom(configurations.implementation.get()) attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES)) diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts index 2587798..e4392d6 100644 --- a/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts @@ -1,7 +1,8 @@ plugins { `maven-publish` alias(libs.plugins.shadow) - id("de.siphalor.tweed5.expanded-sources-jar") + java + `java-library` id("de.siphalor.tweed5.minecraft.mod.component") } diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts index ac51e0f..c0d4e4d 100644 --- a/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts @@ -1,5 +1,4 @@ plugins { - java id("de.siphalor.tweed5.minecraft.mod.base") } diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.publishing.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.publishing.gradle.kts new file mode 100644 index 0000000..d72d8c9 --- /dev/null +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.publishing.gradle.kts @@ -0,0 +1,33 @@ +plugins { + `java-library` + `maven-publish` +} + +group = rootProject.group +version = rootProject.version + +publishing { + repositories { + if (project.hasProperty("siphalor.maven.user")) { + maven { + name = "Siphalor" + url = uri("https://maven.siphalor.de/upload.php") + credentials { + username = project.property("siphalor.maven.user") as String + password = project.property("siphalor.maven.password") as String + } + } + } + } + + publications.all { + if (this is MavenPublication) { + pom { + url.set("https://github.com/Siphalor/tweed-5") + scm { + url.set("https://github.com/Siphalor/tweed-5") + } + } + } + } +} diff --git a/buildSrc/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts b/buildSrc/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts index b4ac465..1b0c6a5 100644 --- a/buildSrc/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts +++ b/buildSrc/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts @@ -3,10 +3,6 @@ plugins { alias(libs.plugins.lombok) } -repositories { - mavenCentral() -} - dependencies { implementation(project(":tweed5-serde-api")) implementation(platform(libs.junit.platform)) diff --git a/minecraft/tweed5-bundle/build.gradle.kts b/minecraft/tweed5-bundle/build.gradle.kts index 8480802..477efa3 100644 --- a/minecraft/tweed5-bundle/build.gradle.kts +++ b/minecraft/tweed5-bundle/build.gradle.kts @@ -1,9 +1,16 @@ plugins { - `maven-publish` - id("de.siphalor.tweed5.base-module") + id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.minecraft.mod.dummy") } +val bundledSourcesConfiguration = configurations.resolvable("bundledSources") { + extendsFrom(configurations.implementation.get()) + isTransitive = true + attributes { + attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES)) + } +} + dependencies { implementation(project(":tweed5-core")) implementation(project(":tweed5-attributes-extension")) @@ -18,3 +25,13 @@ dependencies { tasks.shadowJar { relocate("org.objectweb.asm", "de.siphalor.tweed5.shadowed.org.objectweb.asm") } + +tasks.register("sourcesJar") { + inputs.files(bundledSourcesConfiguration) + from( + bundledSourcesConfiguration.get().resolve() + .filter { it.name.startsWith(rootProject.name) } + .map { zipTree(it) } + ) + archiveClassifier.set("sources") +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 74e1787..58cc1af 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,5 +1,11 @@ rootProject.name = "tweed5" +dependencyResolutionManagement { + repositories { + mavenCentral() + } +} + include("test-utils") include("tweed5-annotation-inheritance") include("tweed5-attributes-extension")