Debian上Java项目如何打包部署
导读:在 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 -version、javac -version
- 更新索引并安装:
- 安装构建工具(二选一或两者皆有):
- Maven:
sudo apt install maven - Gradle:
sudo apt install gradle
- Maven:
- 可选:设置 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添加插件配置(设置mainClass与jar-with-dependencies) - 执行:
mvn clean package
- 在
- 或使用 maven-shade-plugin(更灵活处理冲突与资源)
- 使用 maven-assembly-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.jar 或 app-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
- 发布:
- 端口与防火墙
- 若应用监听 8080:
sudo ufw allow 8080/tcp(或按实际防火墙工具配置)。
- 若应用监听 8080:
四 构建 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/postinstdpkg-deb --build myapp_1.0-1
- 目录结构:
- 规范 Debian 打包(推荐用于正式发布)
- 使用 debhelper 与 javahelper/dh_java 工作流,生成标准
debian/目录(含 control、rules、copyright 等),通过dpkg-buildpackage或debuild构建 .deb,便于在仓库中分发与升级。
- 使用 debhelper 与 javahelper/dh_java 工作流,生成标准
五 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 名)
- 将 WAR 复制到:
- 说明:Tomcat 会自动解压并部署 WAR;如需热部署,可配置自动解压或使用 Manager 应用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上Java项目如何打包部署
本文地址: https://pptw.com/jishu/755256.html
