# 📚 SLMS 应用使用说明
## 🎯 修复内容
### 问题
之前的打包方式只是简单复制同一个 JAR 文件,没有指定正确的主类入口,导致:
- `slms-cli.jar` 无法运行 CLI 应用
- `slms-gui.jar` 无法运行 GUI 应用
- `slms-web.jar` 无法运行 Web 应用
### 解决方案
1. **修改 pom.xml** - 为每个 profile 添加 maven-shade-plugin 或 spring-boot-maven-plugin
2. **修改 Jenkinsfile** - 使用正确的 Maven profile 打包
## 📦 三个应用的打包方式
### 1. CLI 应用 (slms-cli.jar)
```bash
# 打包命令
mvn clean package -Pcli -DskipTests
# 运行方式
java -jar slms-cli.jar
```
**特点**:
- 使用 `maven-shade-plugin` 打包所有依赖
- 主类: `com.smartlibrary.cli.CLIApplication`
- 命令行文本界面
### 2. GUI 应用 (slms-gui.jar)
```bash
# 打包命令
mvn clean package -Pgui -DskipTests
# 运行方式
java -jar slms-gui.jar
# 或双击运行
```
**特点**:
- 使用 `maven-shade-plugin` 打包所有依赖(包括 JavaFX)
- 主类: `com.smartlibrary.gui.GUIApplication`
- JavaFX 图形界面
### 3. Web 应用 (slms-web.jar)
```bash
# 打包命令
mvn clean package -Pweb -DskipTests
# 运行方式
java -jar slms-web.jar
# 然后访问 http://localhost:8080
```
**特点**:
- 使用 `spring-boot-maven-plugin` 打包为可执行 JAR
- 主类: `com.smartlibrary.web.WebApplication`
- Spring Boot Web 应用,内嵌 Tomcat
## 🚀 使用指南
### CLI 应用功能
```
===== 主菜单 =====
1. 添加图书
2. 查看所有图书
3. 搜索图书
4. 借阅图书
5. 归还图书
6. 查看所有借阅记录
0. 退出系统
```
### GUI 应用功能
- **图书管理** 选项卡
- 添加图书
- 搜索图书
- 查看图书列表(表格显示)
- **借阅管理** 选项卡
- 借阅图书
- 归还图书
- 查看借阅记录(表格显示)
### Web 应用功能
- 浏览器访问 `http://localhost:8080`
- 功能与 GUI 类似,但通过网页操作
- 支持多用户同时访问
## 🔧 技术细节
### Maven Shade Plugin
用于 CLI 和 GUI 应用,将所有依赖打包到一个 JAR 中:
```xml
org.apache.maven.plugins
maven-shade-plugin
3.5.0
com.smartlibrary.cli.CLIApplication
```
### Spring Boot Maven Plugin
用于 Web 应用,打包为可执行的 Spring Boot JAR:
```xml
org.springframework.boot
spring-boot-maven-plugin
com.smartlibrary.web.WebApplication
```
## 📋 验证清单
构建完成后,验证每个应用:
### ✅ CLI 应用
```bash
java -jar slms-cli.jar
# 应该显示: ===== 智能图书管理系统 - 命令行界面 =====
```
### ✅ GUI 应用
```bash
java -jar slms-gui.jar
# 应该打开 JavaFX 窗口,标题: 智能图书管理系统 - 图形界面
```
### ✅ Web 应用
```bash
java -jar slms-web.jar
# 应该显示: Tomcat started on port(s): 8080
# 访问 http://localhost:8080 应该看到网页界面
```
## 🐛 常见问题
### 问题 1: GUI 应用报错 "JavaFX runtime components are missing"
**原因**: JavaFX 依赖没有正确打包
**解决**: 确保使用 `-Pgui` profile 打包,maven-shade-plugin 会包含 JavaFX
### 问题 2: CLI/GUI 应用报错 "no main manifest attribute"
**原因**: JAR 的 MANIFEST.MF 中没有指定主类
**解决**: 使用正确的 Maven profile 打包,shade plugin 会自动添加主类
### 问题 3: Web 应用无法启动
**原因**: 可能是端口 8080 被占用
**解决**:
```bash
# 指定其他端口
java -jar slms-web.jar --server.port=8081
```
## 📝 Jenkins 构建流程
1. **编译**: `mvn clean package -DskipTests` (生成基础 JAR)
2. **CLI 打包**: `mvn clean package -Pcli -DskipTests` → `slms-cli.jar`
3. **GUI 打包**: `mvn clean package -Pgui -DskipTests` → `slms-gui.jar`
4. **Web 打包**: `mvn clean package -Pweb -DskipTests` → `slms-web.jar`
5. **Android 打包**: `gradlew :android:assembleDebug` → `slms-debug.apk`
6. **归档制品**: 所有 JAR/APK 文件
7. **推送到头歌**: 制品推送到 release 分支
## 🎉 总结
现在每个应用都有正确的主类入口和完整的依赖,可以独立运行:
- ✅ **slms-cli.jar** - 命令行应用
- ✅ **slms-gui.jar** - 图形界面应用
- ✅ **slms-web.jar** - Web 应用
- ✅ **slms-debug.apk** - Android 应用