Spring Boot支持发布jar包和war包,推荐使用jar包的形式,使用jar包比较方便
区别
- pom文件
- packaging,war或者jar
- 内置容器tomcat依赖,war包需排除tomcat依赖
- 配置文件web.xml
- 入口类
- 入口类继承SpringBootServletInitializer
- 重写configure方法
打包
packaging的方式不同
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.spring.study</groupId>
<artifactId>study-demo</artifactId>
<!— 修改此处 -->
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
继承的方式不同
war包Application.java需要继承SpringBootServletInitializer,而jar包不需要
war包继承方式如下
@SpringBootApplication
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
依赖配置不同
war包需排除tomcat依赖,并将tomcat相关依赖的scope设置成provided
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
添加war包打包插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
failOnMissingWebXml需要开启为false,不然打包会报没有web.xml错误
运行
- jar包,直接通过java -jar来运行
- war包,需要将其放到web容器,如tomcat的webapps目录下,然后启动tomcat 通过tomcat可以便捷的设置jvm、运行线程等,还可以将多个应用映射到同一个端口上
注意:打包war包的时候,application.properties配置的server.port和server.servlet.context-path就无效了,需跟进war包容器的配置