You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.5 KiB
4.5 KiB
Java 21 应用打包与CI/CD指南
一、Java应用打包指南(适配Java 21)
1. Java CLI应用(命令行程序)
打包为可执行Jar
使用Maven配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.smartlibrary.SLMS</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
打包为EXE(使用jpackage)
jpackage --type exe --name SLMS-CLI --input target --main-jar SLMS.jar --main-class com.smartlibrary.SLMS --java-options "-Xmx512m"
打包为MSI安装包
jpackage --type msi --name SLMS-CLI --input target --main-jar SLMS.jar --main-class com.smartlibrary.SLMS
2. Java GUI应用(Swing/AWT)
打包为可执行Jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.smartlibrary.gui.GUIApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
打包为EXE
jpackage --type exe --name SLMS-GUI --input target --main-jar SLMS.jar --main-class com.smartlibrary.gui.GUIApplication --java-options "-Xmx1024m"
3. Java MUI应用(JavaFX)
JavaFX打包配置
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>com.smartlibrary.gui.JavaFXApplication</mainClass>
</configuration>
</plugin>
打包为EXE
jpackage --type exe --name SLMS-FX --input target --main-jar SLMS.jar --main-class com.smartlibrary.gui.JavaFXApplication --runtime-image target/javafx-runtime
4. Java WUI应用(Spring Boot Web)
Spring Boot打包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
打包为EXE
jpackage --type exe --name SLMS-Web --input target --main-jar SLMS.jar --main-class org.springframework.boot.loader.JarLauncher --arguments "--server.port=8080"
二、CI/CD流程设计
1. 整体流程
开发者提交代码 → Gitea仓库 → Jenkins触发构建 → SonarQube代码质量检查 → 项目构建 → 打包应用 → 推送到头歌仓库
2. 环境要求
- JDK 21
- Maven 3.8+
- Jenkins
- SonarQube
- Gitea
3. 项目结构
SLMS/
├── backend/ # 后端代码
├── frontend/ # 前端代码(可选)
├── build.gradle # Gradle构建文件
├── pom.xml # Maven构建文件
├── Jenkinsfile # Jenkins流水线文件
└── cicd.md # 本文档
三、Jenkins配置
1. 必需插件
- Git Plugin
- Pipeline Plugin
- SonarQube Scanner Plugin
- Maven Integration Plugin
2. 系统配置
- JDK 21 安装与配置
- Maven 3.8+ 安装与配置
- SonarQube 服务器配置
3. 凭据配置
- Gitea访问凭据
- SonarQube访问令牌
- 头歌仓库访问凭据
四、构建与部署流程
1. 代码质量检查
- SonarQube静态代码分析
- 代码覆盖率检查
- 代码规范检查
2. 构建流程
- 清理工作空间
- 拉取最新代码
- 编译代码
- 运行测试
- 打包应用
3. 部署流程
- 生成可执行文件
- 创建安装包
- 推送到目标仓库
五、最佳实践
1. 代码管理
- 使用语义化版本控制
- 编写清晰的提交信息
- 定期合并主分支
2. 测试策略
- 单元测试覆盖率 > 80%
- 集成测试覆盖核心功能
- 性能测试验证关键指标
3. 部署策略
- 使用蓝绿部署减少停机时间
- 实施回滚机制应对故障
- 监控应用性能与错误
六、故障排查
1. 常见问题
- JDK版本不匹配
- 依赖冲突
- 打包配置错误
- 权限不足
2. 解决方案
- 检查环境变量配置
- 更新依赖版本
- 验证打包脚本
- 确认访问权限
七、附录
1. 工具下载链接
- JDK 21: https://adoptium.net/
- Maven: https://maven.apache.org/download.cgi
- Jenkins: https://jenkins.io/download/
- SonarQube: https://www.sonarqube.org/downloads/
2. 配置模板
- Maven settings.xml
- Jenkins系统配置
- SonarQube项目配置
3. 参考文档
- Java 21 官方文档
- Maven官方文档
- Jenkins官方文档
- SonarQube官方文档