在 Debian 上打包与部署 Java 项目的实用流程
一 环境准备与构建工具安装
sudo apt update && sudo apt install openjdk-11-jdkjava -version、javac -versionsudo apt install mavensudo apt install gradleecho 'JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' | sudo tee -a /etc/environmentsource /etc/environment二 打包可执行 JAR 的两种方式
mvn clean package(产物在 target/)pom.xml 添加插件配置(设置 mainClass 与 jar-with-dependencies)mvn clean packagegradle build(产物在 build/libs/)id 'com.github.johnrengelman.shadow' version '7.0.0'shadowJar { manifest { attributes 'Main-Class': 'your.main.Class' } }gradle shadowJar三 部署运行与进程管理
java -jar app-1.0.0.jarsudo 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-reloadsudo systemctl start|stop|restart myappsudo systemctl enable myappsudo journalctl -u myapp -fscp app-1.0.0.jar user@server:/opt/myapp/app.jarscp app-0.9.0.jar user@server:/opt/myapp/app.jar && sudo systemctl restart myappsudo ufw allow 8080/tcp(或按实际防火墙工具配置)。四 构建 DEB 包分发(可选)
mkdir -p myapp_1.0-1/DEBIAN myapp_1.0-1/usr/local/bincp target/app-1.0.0.jar myapp_1.0-1/usr/local/bin/app.jarmyapp_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-1debian/ 目录(含 control、rules、copyright 等),通过 dpkg-buildpackage 或 debuild 构建 .deb,便于在仓库中分发与升级。五 Web 项目 WAR 部署到 Tomcat(如适用)
mvn clean package,产物 target/app.war$CATALINA_HOME/webapps/$CATALINA_HOME/bin/startup.shhttp://localhost:8080/app(应用名即 WAR 名)