Skip to content

g000sha256/gradle-module-tree

Repository files navigation

Gradle Module Tree plugin

Maven Central

A Gradle settings plugin that provides a hierarchical DSL for organizing and auto-creating multi-module project structures.

Features

  • 🌳 Hierarchical DSL for module organization
  • 📁 Automatic directory creation
  • 🔗 Automatic module inclusion in Gradle
  • ⚡️ Type-safe project accessors support (automatically enabled)

Setup

Add the plugin to your settings.gradle.kts file:

plugins { id(id = "dev.g000sha256.gradle-module-tree") version "1.1.1" }

Usage

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.