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.