[Spring Boot] Spring Boot 项目发布war 本地调试jar 方法

830 阅读1分钟

背景

大部分的SSH2或SSM的java开发人员习惯在之前的开发框架中直接将应用打包为war形式,而在使用Spring boot框架开发的过程中,默认是将应用发布为jar,但大部分开发者即 希望项目在本地使用Jar调试又可轻松地将应用打为war包在服务容器中发布与测试,特将经验进行一些总结,望能起到作用。

操作步骤

1. 启动IDE:IntelliJ IDEA 2016

2. 新建Spring boot对应的工程,此过程略过,请自行操作

3. 等待下载对应jar包,Make project

4. 修改项目的pom.xml文件,如下所示:

4.1 如果在建立工程时使用的是

<packaging>jar</packaging>
请修改为如下方式:jar->war
<packaging>war</packaging>

4.2 增加以下的依赖项覆盖默认的内嵌tomcat配置(其他容器配置方式相同,仅jar依赖项不同,请自行尝试)

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <!--本地调试jar时请勿开启,需要打war也无需开启-->
      <!--<scope>provided</scope>-->
</dependency>
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
</dependency>

4.3 添加ServletInitializer类,可与Spring boot启动的main方法所在包同级

代码如下:

package com.test;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import com.test.App;

@SpringBootApplication
@ComponentScan
public class ServletInitializer extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)
    {
        return builder.sources(App.class);
    }
}

4.4 使用mvn package命令将工程打为war包,如下图所示:

至此,使用IntelliJ IDEA 2016开发Spring boot项目时,即可在本地进行jar调试,亦可打包war在容器上发布的配置就已经完成。