首页 > 其他分享 >如何将spring boot项目打包成war包

如何将spring boot项目打包成war包

时间:2022-11-06 15:58:41浏览次数:53  
标签:xml web spring boot org war 打包

声明:参考自https://www.cnblogs.com/kendoziyu/p/16085393.html

一、修改打包形式

pom.xml 里设置 <packaging>war</packaging>

二、移除嵌入式tomcat插件

pom.xml 里找到spring-boot-starter-web依赖,在其中添加如下代码,

<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>

三、添加servlet-api的依赖

pom.xml 中新增以下依赖:

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

四、修改启动类,并重写初始化方法

我们平常用 main 方法启动的方式,都有一个App的启动类,代码如下:

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

我们需要类似于web.xml 的配置方式来启动 Spring 上下文了,在 Application 类的同级添加一个SpringBootStartApplication类,其代码如下:

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

/**
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 */
public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(Application.class);
    }
}

五、打包部署

5.1 打war包

在项目根目录下(即包含pom.xml的目录),在命令行里输入:
mvn clean package -Dmaven.test.skip=true 即可, 等待打包完成,出现 [INFO] BUILD SUCCESS 即为打包成功。

5.2 部署

然后把target目录下的war包放到 tomcatwebapps 目录下,启动 tomcat,即可自动解压部署。
最后在浏览器中输入

http://localhost:[端口号]/[打包项目名]/

发布成功

六、其他报错

6.1 webxml attribute is required

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project war-application: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

解决方案:
pom.xml 中指定 maven-war-plugins 插件的版本。

<project>
  ...
  <build>
    <plugins>
      <!-- https://maven.apache.org/plugins/maven-war-plugin/index.html -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <!-- 从 3.1.0 开始,failOnMissingWebXml 默认是 false,因此这里就是特地指定版本-->
        <version>3.1.0</version>
        <configuration>
          <warName>${project.artifactId}</warName>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

标签:xml,web,spring,boot,org,war,打包
From: https://www.cnblogs.com/javaxubo/p/16862767.html

相关文章

  • Spring Tx (六) (Spring事务失效的情况)
    文章目录​​1.访问权限问题​​​​2.方法被final修饰​​​​3.方法内部调用​​​​3.1.新增加一个service方法​​​​3.2.在该Service类中注入自己​​​​3.3.通过Aop......
  • Spring Tx (五) (分布式事务及解决方案)
    文章目录​​1.2PC​​​​1.1可能会存在哪些问题​​​​2.三阶段提交(3PC)​​​​3.补偿事务(TCC)​​​​3.1TCC解决了2PC的问题​​​​4.本地消息表​​​​5.消息事......
  • springboot整合项目-商城新增收货地址功能
    新增收货地址持久层1.新增规划sql语句insertintot_adress(字段列表)values(值列表)2.一个用户的收货地址规定最多只能由20条数据对应,在插入用户数据之前先做......
  • Spring Tx (七) (大事务问题)
    大事务引发的问题:死锁,锁等待,回滚时间长接口超时,数据库主从延迟,并发情况下数据库连接池被打满1.@Transactional注解是通过Spring的AOP起作用的,但是如果使用不当,事务......
  • Springboot2.x 结合 redis 实现ip请求次数限制
    参考https://cloud.tencent.com/developer/article/1607647SpringBoot整合Redis代码详解,四步搞定!https://blog.csdn.net/jinyangbest/article/details/98205802sprin......
  • SpringBoot 自动装配原理
    SpingBoot如何实现自动配置​​SpringBoot​​都需要创建一个​​mian​​启动类,而启动类都含有​​@SpringBootApplication​​注解,从启动类,一步步探索源码。@SpringBoo......
  • Spring三级缓存解决循环依赖
    前提知识1、解决循环依赖的核心依据:实例化和初始化步骤是分开执行的2、实现方式:三级缓存3、lambda表达式的延迟执行特性spring源码执行逻辑核心方法refresh(), populateBea......
  • Spring Boot 中使用 Swagger
    前后端分离开发,后端需要编写接⼝说明⽂档,会耗费⽐较多的时间。swagger是⼀个⽤于⽣成服务器接⼝的规范性⽂档,并且能够对接⼝进⾏测试的⼯具。作用⽣成接⼝说明⽂档对接⼝......
  • vmware虚拟机网络配置详解
    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网......
  • vmware15 虚拟机的三种网络设置
    在vmware虚拟机的设置中,共有四种网络模式可以选择:桥接模式、NAT模式、仅主机模式和自定义模式。本文重点讲解前三种网络模式的设置。下图是我的宿主机的IP信息,在某些场景......