【SpringBoot】20、SpringBoot中打war包需要注意「建议收藏」

【SpringBoot】20、SpringBoot中打war包需要注意「建议收藏」最近在做一个项目,遇到了项目打成war包的一个问题,项目创建时选择的时jar包方式,后因项目部署要求,需要打成war包部署,遇到很多坑,在此做一下记录一、修改打包方式原:<version>0.0.1-SNAPSHOT</version><packaging>jar</packaging>改后:<version>0.0.1-SNAPSHOT</version><packaging>war</p

大家好,又见面了,我是你们的朋友全栈君。

最近在做一个项目,遇到了项目打成 war 包的一个问题,项目创建时选择的时 jar 包方式,后因项目部署要求,需要打成 war 包部署,遇到很多坑,在此做一下记录

一、修改打包方式

原:

<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

改后:

<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

二、排除内置 Tomcat

原:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

改后:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

使用 排除内置服务器

三、添加 Tomcat 依赖

用于编译和测试开发,两种方式
1、

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <!-- 该包只在编译和测试的时候使用 -->
    <scope>provided</scope>
</dependency>

2、

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.5.34</version>
    <!-- 该包只在编译和测试的时候使用 -->
    <scope>provided</scope>
</dependency>

四、改变项目的构造方式

原:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

改后:

<build>
	<!-- 一般为你的项目名,与配置文件中的context-path保持一致 -->
    <finalName>demo</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${ 
   java.version}</source>
                <target>${ 
   java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/resources/lib</directory>
                        <targetPath>WEB-INF/lib/</targetPath>
                        <includes>
                            <include>**/*.jar</include> </includes> </resource> </webResources> </configuration> </plugin> </plugins> </build> 

五、修改启动类

启动类继承 SpringBootServletInitializer,并实现 configure() 方法
原:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication { 
   

    public static void main(String[] args) { 
   
        SpringApplication.run(DemoApplication.class, args);
    }

}

改后:

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;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class DemoApplication extends SpringBootServletInitializer { 
   

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

    public static void main(String[] args) { 
   
        SpringApplication.run(DemoApplication.class, args);
    }

}

六、修改配置文件

修改 application.yml 文件,标明项目项目上下文路径 context-path

server:
  servlet:
    context-path: /demo

七、修改静态资源引入方式

我们使用 thymeleaf 模板引擎,引入 css、js 文件时,需要加上项目上下文路径
原:

<link rel="stylesheet" href="layui/css/layui.css" media="all">

改后:

<link rel="stylesheet" th:href="@{/layui/css/layui.css}" media="all">

我们需要使用 th:href=”@{}” 的方式,去引入静态资源文件

八、测试

我们可以不使用项目的启动类启动项目,我们自己添加一个服务器来启动项目
添加服务器
就想普通的 SSM 项目,添加一个 Tomcat 启动项目,如果能够成功启动项目,并能正常访问,那么打成 war 包也能够正常运行

以上就是我在使用 SpringBoot 打成 war 包遇到的问题,希望能够帮助你

如您在阅读中发现不足,欢迎留言!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142420.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于Pytorch中双向LSTM的输出表示问题

    关于Pytorch中双向LSTM的输出表示问题在使用pytorch的双向LSTM的过程中,我的大脑中蒙生出了一个疑问。双向的lstm的outputs的最后一个状态与hidden,两者之间肯定有所联系,但具体是什么样子的呢?会不会hidden状态存储的就是outputs的最后一个状态,这样的话,岂不是会导致hidden并不能表示整个序列的双向信息吗?带着这个疑问,我开始了实验。具体的实验代码,这里就不放了。直接放实验结果吧。output_size:torch.Size([14,32,100])hidden_size:torch.S

    2022年6月22日
    68
  • asp.net mvc ajax 例子

    asp.net mvc ajax 例子 一、建立一个mvc项目。 二、在Controllers文件夹中加入一个新的控制器ajaxController。代码如下:   usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;usingSystem.Web.Mv

    2022年7月16日
    14
  • SQL service基础(四)连接查询、自身连接查询、外连接查询和复合条件连接查询[通俗易懂]

    SQL service基础(四)连接查询、自身连接查询、外连接查询和复合条件连接查询[通俗易懂]实验目标:1.掌握涉及一个以上数据表的查询方法。2.掌握等值连接3.掌握自然连接4.掌握非等值连接5.掌握自身连接、外连接和复合条件连接本次实验sql脚本:INSERT[dbo].[T]([TNO],[TN],[SEX],[AGE],[PROF],[SAL],[COMM],[DEPT])VALUES(N’T1′,N’李力  ‘,N’男’,…

    2022年5月6日
    71
  • 查看java进程命令_linux查看进程grep

    查看java进程命令_linux查看进程grep在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab)。Linux查看进程ps命令用于查看当前正在运行的进程grep是搜索例如:ps-ef|grepjavaLinux查看进程ps命令表示查看所有进程里CMD是java的进程信息ps-aux|grepjava

    2022年8月23日
    5
  • linux go环境搭建_golang后端框架

    linux go环境搭建_golang后端框架1.下载go语言包,go1.9.2.linux-amd64.tar.gzhttps://www.golangtc.com/download2.解压安装[root@localhostlocal]#pwd/usr/local[root@localhostlocal]#tar-xzvfgo1.9.2.linux-amd64.tar.gz [root@localhostlocal]#c…

    2022年10月10日
    5
  • Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]

    Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]QTreeView和QStandardItemModel的使用QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点)。1. QStandardItemModel在QTreeView中的使用使用QTree

    2022年6月5日
    409

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号