This documentation provides an overview of the project hierarchy and dependencies among various components. The project consists of several plugins and libraries designed to work together to facilitate development and version management.
This archtecture contains projects below:
- arch-platform
- arch-platform-plugin
- arch-platform-springboot-plugin
- arch-lib-springboot
- arch-lib-java
- api-rest
A real project we have to set remote repository configurations and separete all project in their own repositories and ignore that file ./settings.gradle ( used only to help maven instalation locally )
| Stack | Description | Links |
|---|---|---|
| gradle | Dependency management and build automation tool | Gradle Overview |
| gradle plugin | Extensions to Gradle that add new tasks, configurations, or conventions | Writing Custom Gradle Plugins |
| gradle platform | Ensures consistent dependency versions across multiple projects | Gragle Platforms Introduction |
| java 21 | Program language | Java 21 new features |
| springboot | A framework for building rest apis | Rest Api with springboot |
| mapstruct | A Java annotation processor for generating mapping class implementations | Mapstruct introducttion |
Here's a diagram representing the hierarchy and dependencies among the projects:
. arch-platform # main platform contains all version dependencies
│
└── arch-platform-plugin # main plugin provides arch-platform versions
│
├── arch-platform-springboot-plugin # plugin springboot provides third-party org.springframework.boot plugin
│ │
│ │
│ └── arch-lib-springboot # lib springboot that provides all main configs and based beans to nested spring boot projects
│ │
│ ├─────────── api-rest # final project that use 'arch-lib-java' and 'arch-lib-springboot'
│ │
└──────── arch-lib-java # lib java that provides any logic for nested projects
| Project | Type | Description |
|---|---|---|
arch-platform |
gradle plaform | The main platform that contains all version declarations. It serves as the foundation for other plugins and libraries in the project. |
arch-platform-plugin |
gradle plugin | A plugin that applies arch-platform versions to nested projects. It ensures consistent version management across different modules. |
org.springframework.boot |
gradle plugin | A third-party plugin for Spring applications. It provides essential tools and configurations for developing Spring Boot applications. |
arch-platform-springboot-plugin |
gradle plugin | A plugin that extends arch-platform-plugin and applies the org.springframework.boot plugin to nested Spring projects. It combines functionalities of both plugins to streamline Spring Boot development. |
arch-lib-java |
internal library java | A library that extends arch-platform-plugin and contains logic to be used in nested projects. It provides reusable Java components and utilities. |
arch-lib-springboot |
internal library java | A library that extends arch-platform-springboot-plugin and contains logic to be used in nested Spring Boot projects. It offers reusable Spring Boot components and utilities. |
api-rest |
application | A Spring Boot project that extends arch-platform-springboot-plugin and implements both arch-lib-java and arch-lib-springboot. It serves as a template for developing Spring Boot applications with the project's plugins and libraries. |
arch-platformis the main platform containing all version declarations.arch-platform-pluginappliesarch-platformversions to nested projects.arch-platform-springboot-pluginextendsarch-platform-pluginand applies theorg.springframework.bootplugin to nested Spring projects.arch-lib-javaextendsarch-platform-pluginand contains logic for nested projects.arch-lib-springbootextendsarch-platform-springboot-pluginand contains logic for nested Spring Boot projects.api-restis a Spring Boot project that extendsarch-platform-springboot-pluginand implements botharch-lib-javaandarch-lib-springboot.
1 - Install platform locally (the main project to be installed first)
export PROJ=platform; gradle publishToMavenLocal2 - Install plugins locally (requires built and installed platform project)
export PROJ=plugin; gradle publishToMavenLocal3 - Install all libraries locally (requires built and installed plugins)
export PROJ=lib; gradle publishToMavenLocal4 - build final application (requires all built and installed libraries)
export PROJ=none; gradle clean buildEXTRA - build and install All project locally
export PROJ=platform; \
gradle publishToMavenLocal; \
export PROJ=plugin; \
gradle publishToMavenLocal; \
export PROJ=lib; gradle publishToMavenLocal; \
export PROJ=app; gradle clean build --refresh-dependenciesThis documentation provides a comprehensive overview of the project structure, including the hierarchy and dependencies among various components. By understanding these relationships, developers can effectively utilize the project's plugins and libraries to streamline their development process.