# lu-admin
**Repository Path**: Luo_Jing98358/lu-admin
## Basic Information
- **Project Name**: lu-admin
- **Description**: 像搭积木一样来构建你的应用或者服务
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2023-08-17
- **Last Updated**: 2026-01-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Lu-Admin
## 介绍
像搭积木一样来构建你的应用或者服务。Lu-admin 既是一个后台管理框架,又是一个构建应用的工具。lu-admin中的每一个模块都是一个Springboot项目的启动器,它们并不实际提供启动服务的能力,而是将启动的能力交给构建者。当你引入了某个模块,那么你才拥有这个模块的能力或者服务。当你不需要时,你不应该在你的maven中引入它。
## 快速开始
项目目录下lu.sql,先执行了,然后修改`lu-app`中的配置文件
### 方式一(不推荐):
这是传统模式的使用,与众多脚手架一样,项目下提供了lu-app模块,该模块严格来说,并不属于lu-admin中的模块,它并没有被最外层的pom所接管,它就是一个独立springboot项目。
它引入了lu-admin所有模块的所有功能,你可以直接一键启动`AppApplication` 来启动它。
当然你要编写自己的业务代码也需要放到该项目里
+ 优点: 可以快速开发,可以快速修改脚手架的代码
+ 缺点: 与lu-admin脚手架代码在一起,如果脚手架有更新,更新麻烦。而且模块多,一些无需关注的模块都在IDE中,需要自行修改lu-app的包名与项目名
### 方式二(推荐):
在第一种方式中,我们是使用的`lu-app` 来启动的引用,不推荐这么做。 lu-app就是一个应用的启动器,我们可以为我们的应用专门构建我们自己的启动器
+ 进入项目目录下,将lu-admin打包到自己的maven仓库中
+ `mvn clean install` 当然你也可以使用IDEA右侧的Maven工具,进行打包
+ 在任意目录下创建你的项目(maven项目即可,包名那些都是你自己的)
+ 仿照`lu-app` 构建你的项目
+ pom.xml:
+ ```xml
com.lj
lu
1.2.0
pom
import
```
+ 将`lu-app`中的`AppApplication`启动类(可以自己改名字) 和配置文件(yaml文件,日志配置文件)拷贝到你的项目中即可
+ 优点,完全与脚手架分离,lu-admin升级只需要拉取代码再次`mvn clean install`,脚手架功能按需引入,项目结构简单(只有你自己的业务代码,没有脚手架的代码在你的IDE中)
+ 缺点,前置配置复杂,团队协作需要安装相同版本的lu-admin,且所有小伙伴都要安装在本地,当要升级脚手架时所有人都要走一遍安装流程。
+ 如果公司团队有条件的话,可以发布到内网的maven仓库,将lu-admin安装在内网的maven仓库中即可,如果要更新或者你们自己要修改的话,改完只需要更新你们的内网仓库
## 上线部署
`lu-app` 中提供了`Dockerfile`和`docker-compose.yml`的模板。当然你可能需要修改配置,这里使用的是docker方式的部署,你需要将打包后的jar修改好后的`Dockerfile`和`docker-compose.yml`一起上传至服务器,然后执行docker-compose。
当然你也可以直接上传jar使用`nohup java -jar lu-app-1.0-SNAPSHOT.jar --spring.profiles.active=prod > /dev/null 2>&1 &` 命令进行启动
## 模块介绍
### [lu-common](./lu-common/readme.md)
所有项目的公共依赖,主要是一些工具性的东西。如果你要构建的项目不需要提供web的能力(脱离web环境),可以只引入该模块。它提供了常见的工具类/枚举处理/公共异常等
### [lu-common-web](./lu-common-web/readme.md)
所有需要提供web能力的模块需要引入它。它提供了一系列关于web公共处理的能力
### lu-modules
每个模块实现具体的模块能力,开发者可以按需引入,例如 `lu-generator` 是代码生成器,那么在开发阶段需要引入,生产环境不需要。还例如 `lu-dict` 模块只是为了给前端提供字典能力,如果后端不需要查询数据库字典可以不引入。具体模块介绍,请看具体模块的readme文件