springboot项目打包jar包并部署

本文详细介绍如何使用Maven进行项目打包,包括在不同环境下通过命令行或IDEA进行maven打包,以及如何启动和后台运行项目。同时,介绍了如何在多环境配置下启动项目,并提供了Windows和Linux下后台启动项目的命令。此外,还讲解了如何将项目打包成WAR包并在Tomcat上运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

需要在pom.xml文件中添加插件

图片补充:

一、maven命令打包

1、命令窗口cd到根目录(和pom.xmltarget同级),也可在idea工具中选择Terminal

2、执行打包命令 mvn clean package (跳过测试类命令 mvn clean package -Dmaven.test.skip=true)

二、idea插件打包

1、在IDEA右侧Maven Projects栏双击package等待Build Success即可

三、启动项目

打包完成后jar包会生成在项目目录下,具体位置控制台信息会给出:

3.1、单一配置启动

所谓单一配置,就是只有一个环境,开发、测试和生产都用同一个配置文件,启动方式同jar包命令相同。

命令:java -jar xxx.jar

3.2、多环境配置启动

命令:java -jar xxx.jar --spring.profiles.active=xxx

例如,项目中有三个配置文件,分别对应开发、测试和生产环境

application-dev.properties:server.port=8081   (开发环境)

application-test.properties:server.port=8082   (测试环境)

application-prod.properties:server.port=8083 (生产环境)

我想使用开发环境,输入命令:java -jar xxx.jar --spring.profiles.active=dev,这时候端口就变成8081;

我想使用测试环境,输入命令:java -jar xxx.jar --spring.profiles.active=test,这时候端口就变成8082;

我想使用生产环境,输入命令:java -jar xxx.jar --spring.profiles.active=prod,这时候端口就变成8083。

3.3、后台启动(补充)

使用命令:java -jar xxx.jar 这种方式启动有个弊端:一旦窗口关闭,项目也就强制关闭,体验效果很不好。

为了改善这种方式,可以使用后台启动的方式运行jar包。

①Windows下后台启动:

命令:javaw -jar xxx.jar >bootLog.log

注意,是 javaw ,不是 Java ;bootLog.log为自定义输出的日志文件名。

此时,控制台不会显示任何信息,而在当前目录下会生成一个log文件,日志信息会在log文件中生成。关闭控制台,项目依然运行。

打开任务管理器,找到Java应用程序,右键点击“结束任务”即可关闭运行。

②Linux下后台启动:

命令:nohup java -jar xxx.jar &        nohup java -jar xxx.jar >bootLog.log &

第一个命令方式没有自定义log文件名,会在当前目录下自动生成一个名为 “nohup.out” 的文件:

第二个命令方式自定义log文件名,会在当前目录下自动生成当前定义的log文件:

查看日志文件,启动成功后,可以正常访问。

查看当前jar包名的进程,杀死该进程即可关闭运行。

四、打成WAR包(补充)

4.1、初期直接选择war包方式创建项目

创建项目时打包方式直接选择 “war” 

按照上面的打包方式打成war包

将war包复制出来,粘贴到tomcat下的webapps目录下,启动tomcat,可以正常访问项目。

4.2、jar包改war包

①修改pom.xml文件,将项目打成war包

②修改pom.xml文件,移除嵌入式tomcat插件

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <!-- 去除内置的tomcat -->
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
  </exclusions>
</dependency>

或者

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <!-- 去除内置的tomcat -->
  <scope>provided</scope>
</dependency>

③修改pom.xml文件,添加 servlet-api 依赖

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>

④自定义类继承 SpringBootServletInitializer 类,重写初始化方法

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(BootJarApplication.class);
	}

}

然后,按照4.1方法打包并放在tomcat下运行。

注意:

1、以war包方式打包,application.properties 或 application.yml 中配置的端口和访问路径将失效;

2、程序默认访问路径为war包文件名

### Spring Boot 打包 JAR 文件部署到 Docker 容器 #### 准备工作 为了实现将 Spring Boot 项目打包JAR 文件通过 Docker 进行容器化部署,需要完成以下几个核心步骤: --- #### 构建 Spring Boot 应用程序的 JAR 文件 通过 Maven 或 Gradle 工具可以轻松构建 Spring Boot 的可执行 JAR 文件。 对于基于 Maven 的项目,在项目的根目录下运行以下命令来生成 JAR 文件: ```bash mvn clean package ``` 这会清理旧的目标文件夹将最新的应用程序编译为一个单独的 JAR 文件[^2]。默认情况下,JAR 文件会被放置在 `target` 目录中。 如果使用的是 Gradle,则可以通过以下命令生成 JAR 文件: ```bash gradle bootJar ``` --- #### 创建 Dockerfile 文件 创建一个名为 `Dockerfile` 的文件用于定义 Docker 镜像的构建过程。以下是典型的 Dockerfile 内容示例: ```dockerfile # 使用官方的基础 Java 镜像作为父镜像 FROM openjdk:17-jdk-slim # 将当前目录下的目标 JAR 文件复制到容器中的 /app/ 路径下 COPY target/*.jar /app/app.jar # 设置容器的工作目录 WORKDIR /app # 暴露应用所需的端口(假设 Spring Boot 默认监听8080) EXPOSE 8080 # 启动容器时自动运行的应用启动命令 ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 上述配置指定了基础镜像、JAR 文件的位置以及服务暴露的端口号,设置了容器启动后的入口点[^4]。 --- #### 构建 Docker 镜像 确保已经安装好 Docker 和 Docker Compose 后,可以在终端中导航到含 `Dockerfile` 和生成好的 JAR 文件的目录,然后运行以下命令以构建自定义镜像: ```bash docker build -t springboot-app . ``` 此命令会在当前目录查找 `Dockerfile` 按照其中的指令逐步构建一个新的 Docker 镜像,最终命名为 `springboot-app`[^3]。 --- #### 运行 Docker 容器 一旦成功构建了镜像,就可以利用该镜像启动新的容器实例。例如,下面这条命令将会以前台模式启动容器,绑定主机上的某个端口与容器内部的服务端口相对应: ```bash docker run -d -p 9090:8080 --name my-springboot-container springboot-app ``` 这里的 `-d` 参数表示以后台方式运行;`-p` 则用来设置宿主机和容器之间的网络端口映射关系;而 `--name` 是给新创建出来的容器赋予唯一的名字以便后续管理操作更加方便快捷。 另外还可以加上数据持久化的选项比如这样: ```bash docker run -d \ -p 9090:8080 \ -v $(pwd)/logs:/app/logs \ --name my-springboot-container \ springboot-app ``` 这段脚本不仅实现了基本功能还增加了日志记录位置共享的功能使得调试更简单高效。 --- #### 自动化流程 (Optional) 为了进一步简化开发运维一体化(CI/CD),可以借助 Jenkins 来自动化整个流水线作业——从源码检出、测试验证直到最后一步制作镜像推送远程仓库都可通过插件支持无缝衔接起来。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值