SpringBoot项目打包发布

本文详细介绍了SpringBoot项目如何打包成jar和war包,并部署到Linux服务器和Tomcat上运行的过程。

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


SpringBoot项目可以是jar类型的maven项目,也可以是一个war类型的maven项目,取决于我们要不要整合jsp使用。但是不管哪种项目类型,已经不是我们传统意义上的项目结构了。
在本地使用SpringBoot的启动器即可访问我们开发的项目,如果我们将功能开发完毕之后,需要使用SpringBoot项目中的打包功能来将项目进行打包,SpringBoot项目打包在linux服务器运行:



SpringBoot打包发布jar

jar类型项目可以打成jar包

jar类型项目使用SpringBoot打包插件打包时,会在打包的jar中内置一个tomcat的jar。所以我们使用jdk直接运行jar项目即可。
jar项目中有一个功能,将功能代码放到其内置的tomcat中运行。我们可以直接使用浏览器访问即可。

打包流程

这里我是创建了一个SpringBoot项目来做测试,创建的时候添加了Web模块。然后在controller包下创建了一个ControllerDemo.java类。

@Controller
public class ControllerDemo {
    @RequestMapping("/demo")
    @ResponseBody
    public String testDemo(String param){
        return "test " + param;
    }
}

创建SpringBoot项目
启动SpringbootApplication.java类中Main方法,在浏览器中输入http://localhost:8080/demo?param=7,结果如下。
Demo项目启动效果
接下来开始打包jar包。

导入SpringBoot打包插件
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--fork 的含义这里的 fork 设置为 true ,实际上是会在 maven 编译的时候新创建一个虚拟机执行。-->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>
将项目导出成jar包并更新pom文件

pom文件中项目类型设置为jar。

 <packaging>jar</packaging>

设置导出类型

使用maven package指令打包

将侧边栏的Maven调出,然后找到对应项目下的Lifecycle->package按钮,点击即可。

点击package打包按钮

打包成功并通过doc java -jar运行

点击了package按钮稍等片刻,会在控制台看到BUILD SUCCESS字样,即打包成功。
打包成功
此时在Project下的target目录中可以看到打包好的项目jar包。
项目jar包
然后打开dos命令窗口,切换到jar包所在的目录下,用java -jar命令去运行即可。
运行jar包
在浏览器中输如入http://localhost:8080/demo?param=9,看响应结果。
打包成功
SpringBoot打包发布jar包到此成功!

SpringBoot打包发布war包

war类型项目可以打成war包

在打包时需要将内置的tomcat插件排除,配置servlet的依赖。将war正常的放到tomcat服务器中运行即可。
如果我们当前的maven项目本身就是一个war类型的项目,直接打包即可。
但是如果我们当前的maven项目是jar类型的项目,我们需要将项目修改为war类型,修改项目的pom文件,使用packaging标签设置值为war。
并且需要在项目中创建webapp文件夹,并设置为资源文件夹。

导入SpringBoot打包插件

打开pom文件,进行插件的添加或者修改。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--fork 的含义这里的 fork 设置为 true ,实际上是会在 maven 编译的时候新创建一个虚拟机执行。-->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>
将项目导出成war包并更新pom文件

pom文件中项目类型设置为war。

 <packaging>war</packaging>

修改项目导出类型为war包

创建webapp文件夹并设置

webapp文件夹可加可不加,如果没有用到jsp文件,可以不加。
设置webapp

排除项目中自带的Tomcat插件和jsp servlet依赖

因为项目打包之后需要将项目放到一个Tomcat上运行,不再需要web启动中自动以来的tomcat插件。

<!--配置SpringBoot的web启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!--排除web启动中自动依赖的tomcat插件-->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--
    手动依赖tomcat插件,但是表明项目打包时该依赖不会被打进去,目的主要是保证开发阶段本地SpringBoot
    项目可以正常运行
-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
        相当于compile,但是打包阶段做了exclude操作-->
    <scope>provided</scope>
</dependency>
SpringBoot启动类继承SpringBootServletInitializer

SpringBoot的启动类继承SpringBootServletInitializer,并重写configure方法。

package com.chen.springboot;

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

@SpringBootApplication
public class SpringbootApplication extends SpringBootServletInitializer {
    /**
     * 重写配置方法
     * @param builder
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}
使用maven package指令打包

使用package命令打包项目,并将war包放到tomcat下的webapps下,启动tomcat即可。(如果失败了,也可以先clean一下,然后再点击package)。
开始打包
打包成功之后,可以在target目录下看到war包。
打包成功

运行war包

将该war包放在Tomcat服务器的安装路径下的webapps目录下。然后运行bin目录的startup.bat文件,启动tomcat。
war包被解析了
然后在浏览器中输入http://localhost:8080/springboot-0.0.1-SNAPSHOT/demo?param=88,注意url地址中要加上项目名称哦!
war包运行结果

注意:如果我们使用的是tomcat7则需要将javax.el-api-3.0.0.jar包放到tomcat下的lib目录中。


持续更新,如果错误,欢迎大家指出,共同学习...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个小坑货

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值