# 📚 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 应用