A Gradle settings plugin that provides a hierarchical DSL for organizing and auto-creating multi-module project structures.
- 🌳 Hierarchical DSL for module organization
- 📁 Automatic directory creation
- 🔗 Automatic module inclusion in Gradle
- ⚡️ Type-safe project accessors support (automatically enabled)
Add the plugin to your settings.gradle.kts file:
plugins { id(id = "dev.g000sha256.gradle-module-tree") version "1.1.1" }Define your directories and modules in the settings.gradle.kts file. They will be created and included after syncing the project:
include { module(name = "app") directory(name = "core") { module(name = "architecture") module(name = "di") module(name = "resources") module(name = "ui") } directory(name = "features") { directory(name = "main") { module(name = "data") module(name = "domain") module(name = "presentation") } directory(name = "profile") { module(name = "data") module(name = "domain") module(name = "presentation") } } directory(name = "utils") { module(name = "coroutines") } }This creates the following project structure:
project ├── app ├── core │ ├── architecture │ ├── di │ ├── resources │ └── ui ├── features │ ├── main │ │ ├── data │ │ ├── domain │ │ └── presentation │ └── profile │ ├── data │ ├── domain │ └── presentation └── utils └── coroutines Then reference modules in dependencies using type-safe accessors:
dependencies { implementation(dependencyNotation = projects.core.architecture) implementation(dependencyNotation = projects.core.resources) implementation(dependencyNotation = projects.utils.coroutines) }Warning
This plugin automatically enables the incubating Gradle TYPESAFE_PROJECT_ACCESSORS feature.