Gradle Plugin Suite¶
A modular collection of Gradle plugins for Kotlin projects.
What Is This Project¶
This Gradle Plugin suite is a modular build-logic plugins library for Kotlin projects. Instead of having one monolithic plugin, it's split into sub-plugins to provide focused functionality:
property- property management system forgradle.properties,local.properties, and environment variablesconvention- core plugins for Java, Kotlin, Detekt, Dokka, publication, and moreandroid- plugins for Android SDK, Compose, APK signing, namespacingminecraft- resource processor for Bukkit, Fabric, Forge, and Velocity
How to Use¶
Define required plugins¶
In your libs.versions.toml
[versions]
klibs-gradleplugin = "<latest-version>"
[plugins]
# Core
klibs-gradle-detekt = { id = "ru.astrainteractive.gradleplugin.detekt", version.ref = "klibs-gradleplugin" }
klibs-gradle-dokka-module = { id = "ru.astrainteractive.gradleplugin.dokka.module", version.ref = "klibs-gradleplugin" }
klibs-gradle-dokka-root = { id = "ru.astrainteractive.gradleplugin.dokka.root", version.ref = "klibs-gradleplugin" }
klibs-gradle-java-version = { id = "ru.astrainteractive.gradleplugin.java.version", version.ref = "klibs-gradleplugin" }
klibs-gradle-java-utf8 = { id = "ru.astrainteractive.gradleplugin.java.utf8", version.ref = "klibs-gradleplugin" }
klibs-gradle-rootinfo = { id = "ru.astrainteractive.gradleplugin.rootinfo", version.ref = "klibs-gradleplugin" }
klibs-gradle-publication = { id = "ru.astrainteractive.gradleplugin.publication", version.ref = "klibs-gradleplugin" }
# JavaScript
klibs-gradle-js-kobweb-resources = { id = "ru.astrainteractive.gradleplugin.js.kobweb.resources", version.ref = "klibs-gradleplugin" }
klibs-gradle-js-webpack-nosourcemaps = { id = "ru.astrainteractive.gradleplugin.js.webpack.nosourcemaps", version.ref = "klibs-gradleplugin" }
# Minecraft
klibs-gradle-minecraft-resource-processor = { id = "ru.astrainteractive.gradleplugin.minecraft.resource.processor", version.ref = "klibs-gradleplugin" }
# Android
klibs-gradle-android-java = { id = "ru.astrainteractive.gradleplugin.android.java", version.ref = "klibs-gradleplugin" }
klibs-gradle-android-sdk = { id = "ru.astrainteractive.gradleplugin.android.sdk", version.ref = "klibs-gradleplugin" }
klibs-gradle-android-namespace = { id = "ru.astrainteractive.gradleplugin.android.namespace", version.ref = "klibs-gradleplugin" }
klibs-gradle-android-compose = { id = "ru.astrainteractive.gradleplugin.android.compose", version.ref = "klibs-gradleplugin" }
klibs-gradle-android-apk-sign = { id = "ru.astrainteractive.gradleplugin.android.apk.sign", version.ref = "klibs-gradleplugin" }
klibs-gradle-android-apk-name = { id = "ru.astrainteractive.gradleplugin.android.apk.name", version.ref = "klibs-gradleplugin" }
Configure your gradle.properties¶
# Java
klibs.java.source=11
klibs.java.target=11
klibs.java.ktarget=11
# Project
klibs.project.name=MyProject
klibs.project.group=com.example.project
klibs.project.version.string=1.0.0
klibs.project.description=My project description
klibs.project.url=https://github.com/username/project
klibs.project.developers=username|Full Name|email@example.com
Setup your gradle plugins¶
Your root build.gradle.kts
plugins {
// klibs - core
alias(libs.plugins.klibs.gradle.detekt) apply false
alias(libs.plugins.klibs.gradle.dokka.module) apply false
alias(libs.plugins.klibs.gradle.dokka.root) apply false
alias(libs.plugins.klibs.gradle.java.version) apply false
alias(libs.plugins.klibs.gradle.java.utf8) apply false
alias(libs.plugins.klibs.gradle.rootinfo) apply false
alias(libs.plugins.klibs.gradle.publication) apply false
// klibs - javascript
alias(libs.plugins.klibs.gradle.js.kobweb.resources) apply false
alias(libs.plugins.klibs.gradle.js.webpack.nosourcemaps) apply false
// klibs - minecraft
alias(libs.plugins.klibs.gradle.minecraft.resource.processor) apply false
// klibs - android
alias(libs.plugins.klibs.gradle.android.java) apply false
alias(libs.plugins.klibs.gradle.android.sdk) apply false
alias(libs.plugins.klibs.gradle.android.namespace) apply false
alias(libs.plugins.klibs.gradle.android.compose) apply false
alias(libs.plugins.klibs.gradle.android.apk.sign) apply false
alias(libs.plugins.klibs.gradle.android.apk.name) apply false
}
Documentation¶
- Convention Module - Core plugins, properties reference, tasks, and custom property access
- Android Plugins - Android SDK, Compose, signing, namespace, and APK naming plugins
- Minecraft Plugins - Resource processor for Bukkit, Fabric, Forge, and Velocity
- Property Module - Property management system (
PropertyValue, lookup order, caching)