Spring Boot支持發(fā)布jar包和war包,推薦使用jar包的形式暖眼,使用jar包比較方便
區(qū)別
- 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包容器的配置