项目打包与部署 —— 把 Java 项目 “装瓶带走”(本地运行→服务器落地全流程)

咱们给项目装了 “黑匣子” 和 “显微镜”,能查问题、调 bug,但项目始终 “困在” 你的 IDEA 里 —— 想发给同事演示,传一堆代码文件对方还跑不起来;想部署到公司服务器让全部门用,更是不知道从哪下手。

这就像奶茶店只在店里做奶茶,客人不能外带,生意永远做不大。今天这篇,咱们教你把 Java 项目 “装瓶打包” 成独立的
jar
包,既能在自己电脑双击运行,也能部署到 Windows/Linux 服务器,真正实现 “写好的项目能落地、能共用”。

一、先搞懂:为什么要 “打包部署”?(奶茶外带的类比)

先跟你掰扯清楚 “打包部署” 的核心价值,新手常觉得 “在 IDEA 里能跑就行”,但实际工作中这远远不够:

本地打包:把项目从 “IDEA 工程文件” 变成 “独立 jar 包”,就像奶茶从 “店里的制作杯” 装成 “密封外带杯”,不用带整个奶茶店,拿着杯子就能喝;服务器部署:把 jar 包放到专门的服务器上运行,就像奶茶店开 “分店”,所有人都能通过网络访问(比如同事输入
http://服务器IP:8080/book/list
就能查图书),不用挤在你电脑上用。

新手打包部署常踩的 3 个坑,提前给你打预防针:

打出来的 jar 包 “没主类”,双击没反应,像外带杯没装奶茶;服务器上没装 JDK,jar 包跑不起来,像分店没通电;项目配置没改,服务器上的 jar 包还连本地 MySQL,导致数据库连接失败,像外带奶茶没放吸管,喝不了。

二、第一部分:本地打包 —— 把项目变成 “可外带的 jar 包”

Spring Boot 项目打包比传统 Java 项目简单太多,核心靠
spring-boot-maven-plugin
插件,能自动把项目依赖(比如 MyBatis-Plus、Lombok)和主类信息打包进去,生成 “可直接运行的 jar 包”。

步骤 1:配置 pom.xml—— 给 “外带杯” 装核心零件

打开项目的
pom.xml
,确认两个关键配置(没有就加上),这是打可执行 jar 包的前提:

xml



<!-- 1. 父依赖:Spring Boot打包的基础,必须有 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.10</version> <!-- 和之前保持一致,别乱改 -->
</parent>
 
<!-- 2. Spring Boot打包插件:核心!负责把项目打成可执行jar包 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.10</version>
            <configuration>
                <!-- 指定主类(启动类的全路径,避免打出来的jar没主类) -->
                <mainClass>com.example.bookmanage.BookManageApplication</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal> <!-- 重打包,生成可执行jar -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
🔍 图示 1:pom.xml 打包配置关键区域示意图
配置项 作用说明 界面标注

spring-boot-starter-parent
提供打包默认配置,不用自己写复杂插件 父依赖节点,通常在 pom.xml 最顶部

spring-boot-maven-plugin
核心打包插件,生成可执行 jar build→plugins 节点下,需指定 mainClass

mainClass
告诉 jar 包 “启动时执行哪个类” configuration 节点内,路径要和启动类完全一致

步骤 2:IDEA 打包操作 ——“密封外带杯” 的 3 步流程

打包不用记命令,IDEA 右侧有可视化的 Maven 面板,跟着点就行:

清理项目:展开右侧 “Maven” 面板→
book-manage-system

Lifecycle
→双击
clean
,清除之前的编译文件(避免旧文件干扰);编译项目:双击
compile
,把 Java 代码编译成 class 文件(像奶茶店把原料煮好);打包生成 jar:双击
package
,Maven 会自动打包,成功后控制台会显示 “BUILD SUCCESS”。

🔍 图示 2:IDEA Maven 打包步骤示意图
步骤 操作路径 成功标志
1. 清理 Maven→Lifecycle→clean 控制台输出 “BUILD SUCCESS”,target 目录清空
2. 编译 Maven→Lifecycle→compile target→classes 目录生成 class 文件
3. 打包 Maven→Lifecycle→package target 目录生成
book-manage-1.0-SNAPSHOT.jar
(jar 包)

步骤 3:找到并测试 jar 包 ——“外带奶茶” 能不能喝?

打包成功后,jar 包在
项目根目录/target
下,名字通常是
artifactId-version.jar
(比如
book-manage-1.0-SNAPSHOT.jar
),接下来测试它能不能独立运行:

方式 1:双击运行(适合 Windows 本地)

直接双击 jar 包 —— 如果弹出黑窗口,显示 “Started BookManageApplication in X seconds”,说明运行成功;⚠️ 注意:如果双击没反应,打开命令提示符(CMD),进入 jar 包所在目录,执行
java -jar book-manage-1.0-SNAPSHOT.jar
,查看报错信息(通常是没装 JDK 或 JDK 环境变量没配)。

方式 2:命令行运行(Windows/Linux 通用)

打开 CMD(Windows)或终端(Linux),进入 jar 包目录:

bash



# Windows示例:进入D盘的jar包目录
cd D:JavaProjectsook-manage-system	arget

执行运行命令:

bash


java -jar book-manage-1.0-SNAPSHOT.jar

测试接口:打开浏览器,输入
http://localhost:8080/book/list
,能看到图书列表,说明 jar 包运行正常!

🔍 图示 3:jar 包命令行运行效果示意图

bash



# 命令行输入
D:JavaProjectsook-manage-system	arget>java -jar book-manage-1.0-SNAPSHOT.jar
 
# 控制台输出(成功标志)
  .   ____          _            __ _ _
 / / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 /  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.10)
 
2025-10-15 10:00:00.000  INFO 1234 --- [           main] c.e.b.BookManageApplication              : Starting BookManageApplication v1.0-SNAPSHOT using Java 1.8.0_381 on DESKTOP-XXXX with PID 1234
2025-10-15 10:00:00.001  INFO 1234 --- [           main] c.e.b.BookManageApplication              : No active profile set, falling back to 1 default profile: "default"
2025-10-15 10:00:02.123  INFO 1234 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2025-10-15 10:00:02.134  INFO 1234 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-10-15 10:00:02.134  INFO 1234 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.78]
2025-10-15 10:00:02.345  INFO 1234 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-10-15 10:00:02.345  INFO 1234 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2200 ms
2025-10-15 10:00:03.567  INFO 1234 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2025-10-15 10:00:03.890  INFO 1234 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2025-10-15 10:00:04.123  INFO 1234 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2025-10-15 10:00:04.134  INFO 1234 --- [           main] c.e.b.BookManageApplication              : Started BookManageApplication in 4.567 seconds (JVM running for 5.123)

三、第二部分:服务器部署 —— 把 “外带奶茶” 放到 “分店”(Windows/Linux 双场景)

本地跑通还不够,要让其他人也能访问,得把 jar 包部署到服务器。下面分 “Windows 服务器”(新手入门)和 “Linux 服务器”(企业常用)两种场景,都是实战步骤。

场景 1:Windows 服务器部署(简单易上手)

适合新手练手,比如用公司的 Windows 电脑当临时服务器:

步骤 1:准备服务器环境

装 JDK:和本地装 JDK 步骤一样,注意配置
JAVA_HOME
环境变量,执行
java -version
能显示版本就对了;装 MySQL:如果服务器需要独立数据库(不连本地 MySQL),就装 MySQL,创建
book_db
库,执行之前的
book
表 SQL;改项目配置:本地
application.yml
的数据库地址是
localhost
,服务器上要改:

yaml



spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 服务器MySQL地址:如果MySQL和jar包在同一台服务器,填localhost;不在同一台,填MySQL服务器IP
    url: jdbc:mysql://localhost:3306/book_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
    username: root  # 服务器MySQL用户名
    password: 123456  # 服务器MySQL密码

改完后重新打包,生成新的 jar 包。

步骤 2:上传 jar 包到服务器

用 Windows 自带的 “远程桌面连接”(Win+R 输入
mstsc
)登录服务器,把新 jar 包复制到服务器的目录(比如
D:java-projects
)。

步骤 3:后台运行 jar 包(避免关闭窗口就停止)

双击 jar 包会弹出黑窗口,关闭窗口项目就停了,用命令行让它后台运行:

打开 CMD,进入 jar 包目录:

bash


cd D:java-projects

执行后台运行命令(创建 bat 脚本,双击运行):新建
start.bat
文件,内容如下:

bat



@echo off
# 后台运行jar包,日志输出到book-log.txt
start javaw -jar book-manage-1.0-SNAPSHOT.jar > book-log.txt 2>&1
echo 项目已启动,日志在book-log.txt
pause

双击
start.bat
,会弹出 CMD 窗口提示 “项目已启动”,关闭窗口不影响项目运行。

步骤 4:测试访问

在自己电脑的浏览器输入 “服务器 IP:8080/book/list”(比如
http://192.168.1.100:8080/book/list
),能看到图书列表,说明部署成功!

场景 2:Linux 服务器部署(企业级实战,以 CentOS 为例)

企业常用 Linux 服务器(稳定、占用资源少),核心是 “用命令行操作”,步骤如下:

步骤 1:准备服务器环境

装 JDK

bash



# 1. 查看可安装的JDK版本
yum search java-1.8.0-openjdk
# 2. 安装JDK 1.8
yum install -y java-1.8.0-openjdk-devel.x86_64
# 3. 验证安装:显示java version "1.8.0_xxx"即成功
java -version

装 MySQL:用 Docker 装 MySQL(简单快捷,避免复杂配置):

bash



# 1. 安装Docker(如果没装)
yum install -y docker
systemctl start docker
systemctl enable docker
# 2. 拉取MySQL 8.0镜像
docker pull mysql:8.0
# 3. 启动MySQL容器(设置密码123456,映射端口3306)
docker run -d --name mysql-book -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 4. 进入容器,创建book_db库
docker exec -it mysql-book mysql -uroot -p123456
# 5. 在MySQL命令行执行建库建表SQL
create database book_db;
use book_db;
# 粘贴之前的book表SQL...

改项目配置:和 Windows 服务器一样,改
application.yml
的数据库地址为 Linux 服务器 IP(比如
192.168.1.101
),重新打包。

步骤 2:上传 jar 包到 Linux 服务器

用 Xftp(可视化工具)连接 Linux 服务器,把 jar 包上传到
/home/java-projects/
目录(没有就用
mkdir -p /home/java-projects
创建)。

步骤 3:后台运行 jar 包(nohup 命令)

Linux 下用
nohup
命令让 jar 包后台运行,关闭终端不停止:

bash



# 1. 进入jar包目录
cd /home/java-projects
# 2. 后台运行jar包,日志输出到nohup.out
nohup java -jar book-manage-1.0-SNAPSHOT.jar &
# 3. 查看日志,确认启动成功
tail -f nohup.out

看到 “Started BookManageApplication in X seconds”,说明启动成功,按
Ctrl+C
退出日志查看。

步骤 4:开放服务器端口(关键!否则访问不到)

Linux 默认防火墙会拦截 8080 端口,要开放端口:

bash



# 1. 开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 2. 重新加载防火墙规则
firewall-cmd --reload
# 3. 验证端口是否开放:显示yes即成功
firewall-cmd --zone=public --query-port=8080/tcp
🔍 图示 4:Linux 服务器部署关键命令与效果示意图
命令 作用说明 成功效果

nohup java -jar xxx.jar &
后台运行 jar 包 终端输出 “[1] 1234”(进程号 1234)

tail -f nohup.out
实时查看运行日志 显示 Spring Boot 启动日志,直到 “Started…”

firewall-cmd --query-port=8080/tcp
检查 8080 端口是否开放 终端输出 “yes”
步骤 5:测试访问

在本地浏览器输入 “Linux 服务器 IP:8080/book/list”(比如
http://192.168.1.101:8080/book/list
),能看到图书列表,企业级部署就完成了!

四、第三部分:部署后常见问题排查(避坑指南)

新手部署常遇到 “访问不到”“连不上数据库”,用下面的方法排查,90% 的问题都能解决:

1. 问题 1:jar 包启动报错 “找不到主类”

原因:pom.xml 没配置
mainClass
,或路径写错(比如少写了包名);解决:检查
spring-boot-maven-plugin

mainClass
是否为
com.example.bookmanage.BookManageApplication
,重新打包。

2. 问题 2:访问 “服务器 IP:8080” 没反应

排查步骤

先在服务器本地执行
curl http://localhost:8080/book/list
,看是否返回数据(排除项目本身问题);检查服务器防火墙是否开放 8080 端口(Windows 看 “高级防火墙”,Linux 用
firewall-cmd --query-port=8080/tcp
);确认服务器 IP 是否正确(用
ipconfig
(Windows)或
ifconfig
(Linux)查看)。

3. 问题 3:数据库连接失败(HikariPool 启动失败)

原因

数据库地址 / 用户名 / 密码错(
application.yml
配置和服务器 MySQL 不一致);服务器 MySQL 没启动(Windows 看服务,Linux 用
docker ps
看 MySQL 容器是否运行);远程访问没开启(Linux MySQL 默认不允许远程连接,需授权:
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
)。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
五月天里的水水水的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容