# mjga-scaffold **Repository Path**: geekcheng_admin/mjga-scaffold ## Basic Information - **Project Name**: mjga-scaffold - **Description**: 现代化 Java Web 脚手架中的最佳实践 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: https://www.mjga.cc - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2024-09-06 - **Last Updated**: 2024-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Make Java Great Again! 🧧🎖️🥇🏅🏆 ![modern](https://img.shields.io/badge/Modern-blue) ![Lightweight](https://img.shields.io/badge/Lightweight-green) ![Test](https://img.shields.io/badge/Comprehensive_Testing-yellow) ![Meticulous coding](https://img.shields.io/badge/Meticulous_coding-red) ![Meticulous coding](https://img.shields.io/badge/Not_all_in_one-purple) - [English](README_EN.md) - [中文](README_EN.md) [MJGA](https://www.mjga.cc) 是一款基于以下理念设计的现代化 Java Web 脚手架。 ## 容器化与云原生 🍋 1. 通过 `docker-compose.yml` 管理应用程序的整个生命周期与配置。 2. 通过 `.env` 文件自定义所有配置。 3. 通过 `docker-compose.yml` 交付整个应用程序和配套的生态组件。 ## 开箱即用 🍌 1. 集成了常用的基础业务功能,如身份验证、权限管理和缓存抽象。 2. Code Check&Format、CI/CD Plugin 、Docker Integration 全部开箱即用。 3. 完善的、从设计出发的、隔离了运行环境的单元测试。 ## 现代化 🍒 1. 现代化:技术选型紧跟开源社区风向。 2. 可配置化:支持在网页上选配组件。 3. 考究的编码:每个变量和函数、每个模块和组件都考虑最佳实践。 4. Not-all-in-one:现在和未来,MJGA 都将守好自己的边界。 ## 技术选型 🥝 [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/) | 技术栈 | 版本号 | | |----------------|--------|----------------| | OpenJdk | 17 | | | SpringBoot | 3.2.5 | 核心框架 | | SpringDoc | 2.2.0 | 生成 OpenAPI 文档 | | TestContainers | 1.19.7 | 为测试环境提供容器支持 | | Jooq | 3.18.6 | 生成类型安全的 SQL 查询 | | Gradle | 8.7 | 自动化构建工具 | | Pmd | 6.55.0 | 静态代码分析工具 | | Spotless | 6.25.0 | 代码格式化 | | ... | ... | ... | ## 快速开始 🍉 ### 通过容器启动(推荐) 一、确认默认的环境变量配置。 ```shell # env will be applied to compose.yaml less ${projectRoot}/.env ``` 二、[安装 Docker。](https://docs.docker.com/engine/install/) 三、启动容器。 ```shell cd ${projectRoot} docker-compose up -d ``` ### 在本机启动(可选) ```shell # confirm .env and make sure process can use it nano/vim ${projectRoot}/.env ${projectRoot}/gradlew bootRun ``` ### 创建数据库 Mapping Source ```shell # confirm .env and make sure process can use it nano/vim ${projectRoot}/.env # generate schema mapping codes ./gradlew generateJooq # output -> # projectRootDir/build/generated-src # └── jooq # └── tables # table mapping # ├── daos # Data Access Layer # ├── pojos # mapping dto # └── records # jooq query record ``` [更多文档请点击...](https://www.mjga.cc/doc/db-first) ## 测试覆盖率 🍓 ![cover](https://www.mjga.cc/report/cover.png) ![summary](https://www.mjga.cc/report/summary.png) ## 🔗 [![portfolio](https://img.shields.io/badge/mjga-000?style=for-the-badge&logo=ko-fi&logoColor=white)](https://www.mjga.cc/)