首页主机资讯Debian上Java项目如何打包部署

Debian上Java项目如何打包部署

时间2025-11-25 09:22:03发布访客分类主机资讯浏览1332
导读:在 Debian 上打包与部署 Java 项目的实用流程 一 环境准备与构建工具安装 安装 OpenJDK(示例选用 OpenJDK 11): 更新索引并安装:sudo apt update && sudo apt i...

在 Debian 上打包与部署 Java 项目的实用流程


一 环境准备与构建工具安装

  • 安装 OpenJDK(示例选用 OpenJDK 11):
    • 更新索引并安装:sudo apt update & & sudo apt install openjdk-11-jdk
    • 验证版本:java -versionjavac -version
  • 安装构建工具(二选一或两者皆有):
    • Mavensudo apt install maven
    • Gradlesudo apt install gradle
  • 可选:设置 JAVA_HOME(便于统一环境)
    • 写入环境:echo 'JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' | sudo tee -a /etc/environment
    • 使生效:source /etc/environment
  • 建议:在 CI 或生产环境固定 JDK 版本,避免不同机器行为差异。

二 打包可执行 JAR 的两种方式

  • 使用 Maven
    • 普通打包:mvn clean package(产物在 target/
    • 生成“fat/uber JAR”(含依赖):
      • 使用 maven-assembly-plugin
        • pom.xml 添加插件配置(设置 mainClassjar-with-dependencies
        • 执行:mvn clean package
      • 或使用 maven-shade-plugin(更灵活处理冲突与资源)
  • 使用 Gradle
    • 普通打包:gradle build(产物在 build/libs/
    • 生成“fat/uber JAR”:
      • 应用插件:id 'com.github.johnrengelman.shadow' version '7.0.0'
      • 配置 shadowJar { manifest { attributes 'Main-Class': 'your.main.Class' } }
      • 执行:gradle shadowJar
  • 产物命名约定:可执行 JAR 建议包含版本与标识,如 app-1.0.0.jarapp-1.0.0-all.jar

三 部署运行与进程管理

  • 直接运行(测试/简单场景)
    • java -jar app-1.0.0.jar
    • 建议前台运行观察日志;生产环境使用进程管理工具(见下节)。
  • 使用 systemd 托管(推荐)
    • 创建服务文件:sudo nano /etc/systemd/system/myapp.service
    • 示例内容(按需修改路径与用户):
      [Unit]
      Description=My Java Application
      After=network.target
      
      [Service]
      Type=simple
      User=appuser
      ExecStart=/usr/bin/java -jar /opt/myapp/app-1.0.0.jar
      Restart=on-failure
      Environment="JAVA_OPTS=-Xms512m -Xmx1g"
      
      [Install]
      WantedBy=multi-user.target
      
    • 常用命令:
      • 重载配置:sudo systemctl daemon-reload
      • 启动/停止/重启:sudo systemctl start|stop|restart myapp
      • 开机自启:sudo systemctl enable myapp
      • 查看日志:sudo journalctl -u myapp -f
  • 远程发布与回滚(示例)
    • 发布:scp app-1.0.0.jar user@server:/opt/myapp/app.jar
    • 回滚:scp app-0.9.0.jar user@server:/opt/myapp/app.jar & & sudo systemctl restart myapp
  • 端口与防火墙
    • 若应用监听 8080sudo ufw allow 8080/tcp(或按实际防火墙工具配置)。

四 构建 DEB 包分发(可选)

  • 简易手工法(快速交付)
    • 目录结构:mkdir -p myapp_1.0-1/DEBIAN myapp_1.0-1/usr/local/bin
    • 复制 JAR:cp target/app-1.0.0.jar myapp_1.0-1/usr/local/bin/app.jar
    • 控制文件 myapp_1.0-1/DEBIAN/control
      Package: myapp
      Version: 1.0-1
      Section: java
      Priority: optional
      Architecture: all
      Depends: default-jre
      Maintainer: Your Name <
          you@example.com>
          
      Description: A simple Java application
      
    • 安装后脚本 myapp_1.0-1/DEBIAN/postinst(创建启动脚本):
      #!/bin/bash
      cat >
          /usr/local/bin/myapp <
          <
          'EOF'
      #!/bin/bash
      exec java -jar /usr/local/bin/app.jar "$@"
      EOF
      chmod +x /usr/local/bin/myapp
      
    • 赋权并打包:
      • chmod 755 myapp_1.0-1/DEBIAN/postinst
      • dpkg-deb --build myapp_1.0-1
  • 规范 Debian 打包(推荐用于正式发布)
    • 使用 debhelperjavahelper/dh_java 工作流,生成标准 debian/ 目录(含 control、rules、copyright 等),通过 dpkg-buildpackagedebuild 构建 .deb,便于在仓库中分发与升级。

五 Web 项目 WAR 部署到 Tomcat(如适用)

  • 打包:Maven 项目执行 mvn clean package,产物 target/app.war
  • 部署到 Apache Tomcat
    • 将 WAR 复制到:$CATALINA_HOME/webapps/
    • 启动 Tomcat:$CATALINA_HOME/bin/startup.sh
    • 访问:http://localhost:8080/app(应用名即 WAR 名)
  • 说明:Tomcat 会自动解压并部署 WAR;如需热部署,可配置自动解压或使用 Manager 应用。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian上Java项目如何打包部署
本文地址: https://pptw.com/jishu/755256.html
Debian Python如何配置Web服务器 ubuntu filebeat如何解决报错问题

游客 回复需填写必要信息