Spring Boot 默认编译后的jar, 因为在Spring Boot Web项目中,已经内嵌Tomcat容器,这样只需要启动jar就可以运行web项目。

本示例以Maven项目为例,在演示将Spring Boot jar应用变成 war.

1.工具及版本

  • Spring Boot 1.5.9.RELEASE
  • Maven 3.1.0
  • apache-tomcat-9.0.8

2.修改配置

默认jar项目的运行是使用:

1
java -jar target/mymodule-0.0.1-SNAPSHOT.jar

转换成war, 只需要修改pom.xml配置即可完成。

首先,将文件的类型从jar变成war

1
<packaging>jar</packaging>
1
<packaging>war</packaging>

其次,就是将内嵌的tomcat jar修改为运行环境:

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

最后在主入口出添加继承 org.springframework.boot.web.support.SpringBootServletInitializer

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.devnp.springbootwardemo;

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

@SpringBootApplication
public class SpringBootWarDemoApplication extends SpringBootServletInitializer {

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

完成上述几步就基本完成Spring Boot jar 项目到 war, 再次运行编译命令就会发现生成的war:

1
mvn clean package

生成的war就可以部署到容器当中。

3.测试

编写一个Controller, 用于访问,将编译的spring-boot-war-demo.war放进tomca/webapps下面,启动tomcat:
访问:http://localhost:8080/spring-boot-war-demo/hello

4.代码

spring-boot-war-demo

5.参考

how to-create-a-deployable-war-file