springboot 2.0 打war包
1.配置pom文件
<packaging>war</packaging>
添加springboot-tomcat插件,用以覆盖springboot-web下的tomcat依赖,scope改成provided(只在编译和运行时起作用)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
如果需要过滤资源文件,或者加入资源文件
<build> <resources> <resource> <includes>**/**</includes> <excludes>/**</excludes> </resource> </resources> ....... </build>
加入tomcat运行时,servlet容器初始化类,初始化springboot:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); //注意这里Application.class 是项目springboot启动类 } }
然后运行mvn package -DskipTests 忽略测试的打包,打完包之后target下会有两个war
app.war app.war.original
注意:在app.war中 springboot2.0 会将 标记了provided的依赖打到一个l与lib目录同级的ib-provided目录中。
如果不需要这个,可以选择app.war.original 包作为正式包,运行都不会报错。