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.
slms/docs/cicd.md

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. 工具下载链接

2. 配置模板

  • Maven settings.xml
  • Jenkins系统配置
  • SonarQube项目配置

3. 参考文档

  • Java 21 官方文档
  • Maven官方文档
  • Jenkins官方文档
  • SonarQube官方文档