6.x: Build logic housekeep - #188
Merged
Merged
Conversation
- Upgrade vanniktech maven-publish 0.34.0 → 0.36.0 (AGP 9.1 compat) - Centralize shared POM via MavenPom.arkitektPomBase() in buildSrc - Replace deprecated configure(AndroidSingleVariantLibrary / Kotlin Multiplatform) with configureBasedOnAppliedPlugins() and drop the redundant androidVariantsToPublish list - Unify jvmToolchain(17) across Android-library modules, example, and arkitekt-lint - Set inceptionYear 2026 for the Decompose family modules - Replace stale detekt source list with dynamic subprojects scan - Delete per-module gradle.properties and POM_* keys from the root; prune unused ProjectSettings nested objects Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This reverts commit e945b00.
matejsemancik
requested review from
RudolfHladik,
Syntey,
Copilot and
okalman
and removed request for
Copilot and
okalman
April 24, 2026 12:41
Contributor
There was a problem hiding this comment.
Pull request overview
Tech-debt cleanup of the Gradle build logic ahead of the 6.x release, focusing on reducing per-module publishing boilerplate, aligning build toolchains, and updating publishing tooling for newer AGP compatibility.
Changes:
- Centralized shared Maven POM metadata into a
buildSrcMavenPom.arkitektPomBase()extension and simplified per-modulemavenPublishing {}blocks. - Unified Kotlin JVM toolchain usage (
jvmToolchain(17)) across modules and removed duplicated per-module JVM target/compile options wiring. - Updated build infra: bumped vanniktech maven-publish to
0.36.0, made detekt sources dynamic across subprojects, and simplified signing configuration.
Reviewed changes
Copilot reviewed 21 out of 22 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| gradle.properties | Removes legacy POM/publishing properties now configured via Gradle DSL. |
| build.gradle.kts | Simplifies signing hook and makes detekt sources dynamic across subprojects. |
| buildSrc/build.gradle.kts | Adds mavenCentral() to buildSrc repositories. |
| buildSrc/src/main/kotlin/Versions.kt | Bumps vanniktech maven-publish version to 0.36.0. |
| buildSrc/src/main/kotlin/ProjectSettings.kt | Removes dead publishing/artifact constants; keeps core settings only. |
| buildSrc/src/main/kotlin/ArkitektPom.kt | Introduces shared POM metadata function for published modules. |
| example/build.gradle.kts | Switches to Kotlin jvmToolchain(17) and removes per-module JVM target/compileOptions duplication. |
| core/build.gradle.kts | Adopts centralized publishing config and jvmToolchain(17). |
| core/gradle.properties | Removes per-module POM properties. |
| core-test/build.gradle.kts | Adopts centralized publishing config and jvmToolchain(17). |
| core-test/gradle.properties | Removes per-module POM properties. |
| compose/build.gradle.kts | Adopts centralized publishing config and jvmToolchain(17). |
| cr-usecases/build.gradle.kts | Adopts centralized publishing config and jvmToolchain(17). |
| cr-usecases/gradle.properties | Removes per-module POM properties. |
| cr-usecases-test/build.gradle.kts | Adopts centralized publishing config and jvmToolchain(17). |
| cr-usecases-test/gradle.properties | Removes per-module POM properties. |
| decompose/build.gradle.kts | Adopts centralized publishing config, jvmToolchain(17), and sets inception year to 2026. |
| decompose-test/build.gradle.kts | Adopts centralized publishing config, jvmToolchain(17), and sets inception year to 2026. |
| decompose-annotation/build.gradle.kts | Adopts centralized publishing config, jvmToolchain(17), and sets inception year to 2026. |
| decompose-processor/build.gradle.kts | Adopts centralized publishing config, jvmToolchain(17), and sets inception year to 2026. |
| arkitekt-lint/build.gradle.kts | Sets Kotlin JVM toolchain to 17 for lint module. |
| .github/workflows/publish_release.yml | Removes plugin publishing step from release workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Syntey
approved these changes
Apr 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Tech-debt-only pass on the Gradle build logic ahead of the 6.x release. Centralizes the POM boilerplate shared across 9 published modules, unifies the JVM toolchain, and pulls vanniktech maven-publish up to 0.36.0 (required for AGP 9.1 compat).
flowchart LR subgraph buildSrc POM["ArkitektPom.kt<br/>MavenPom.arkitektPomBase()<br/>url, licenses, scm, developers"] SETTINGS["ProjectSettings.kt<br/>group, compileSdk, minSdk"] end subgraph "Published modules (9)" direction TB A["core · compose<br/>core-test · cr-usecases-test"] K["cr-usecases · decompose<br/>decompose-test<br/>decompose-annotation<br/>decompose-processor"] end subgraph "Per-module mavenPublishing { }" P1["publishToMavenCentral()"] P2["signAllPublications()"] P3["configureBasedOnAppliedPlugins()"] P4["coordinates(group, artifactId)"] P5["pom { name, description,<br/>inceptionYear, arkitektPomBase() }"] end A --> P1 & P2 & P3 & P4 & P5 K --> P1 & P2 & P3 & P4 & P5 POM --> P5 SETTINGS --> P4 ROOT["build.gradle.kts (root)<br/>subprojects { plugins.withId('signing')<br/>→ useInMemoryPgpKeys }<br/>detekt { dynamic subprojects scan }"] ROOT -.-> A ROOT -.-> KChanges
AndroidPluginVersion, removed in AGP 9.1, so the old version silently failed its AGP check. 0.36.0 is tested up to AGP 9.1.0-alpha05.MavenPom.arkitektPomBase()— extension function inbuildSrc/src/main/kotlin/ArkitektPom.ktowns url / licenses / scm / developers. Each module sets onlyname,description,inceptionYear.configureBasedOnAppliedPlugins()replaces the per-moduleconfigure(AndroidSingleVariantLibrary(publishJavadocJar = false))andconfigure(KotlinMultiplatform(...))calls (the Boolean-based variants are deprecated in 0.36.0). Also drops the redundantandroidVariantsToPublish = listOf(\"debug\", \"release\")that was a no-op undercom.android.kotlin.multiplatform.library.kotlin { jvmToolchain(17) }across the Android-library modules (core,compose,core-test,cr-usecases-test),example, andarkitekt-lint. Replaces thecompileOptions VERSION_17+kotlin { compilerOptions { jvmTarget.set(JVM_17) } }duplex.decompose,decompose-test,decompose-annotation,decompose-processor); 2018 retained for legacy modules.detekt { source.setFrom(...) }now walkssubprojectsinstead of a hard-coded path list that silently skippeddecompose-test.gradle.properties(core,core-test,cr-usecases,cr-usecases-test) andPOM_*/SONATYPE_HOST/mavenCentralPublishing/signAllPublicationskeys from the rootgradle.properties— values now live in the Gradle DSL.ProjectSettings.Publish,Core,CoreTest,CrUseCases,CrUseCasesTest,Daggerobjects frombuildSrc— dead code.plugins.withId(\"signing\") { useInMemoryPgpKeys(...) }) kept in rootsubprojects { }(moving it into a convention plugin would require AGP on buildSrc's classpath, which conflicts with Kotlin 2.3.x on KMPiosArm64compile — deferred).Test plan
./gradlew helpand./gradlew assemble— succeed./gradlew detekt ktlintCheck— succeed; detekt now scansdecompose-testsources (previously skipped)publishToMavenLocalfor all 9 modules — verified POMs in~/.m2/repository/app/futured/arkitekt/*contain correctname,description,url,licenses,scm,developersinceptionYearis2018forcoreandcr-usecases,2026fordecomposeanddecompose-test:decompose:publishToMavenLocalproduces a single Android artifact (no-debug/-releasepair), confirming theandroidVariantsToPublishremoval is a true no-oppublish_release.yml) run against a pre-release tag to confirm signing + Maven Central Portal upload still work end-to-end🤖 Generated with Claude Code