Spring-boot--構建war包
在IDEA中預設spring boot都是構建成jar包,然後使用內建的容器執行,如果要部署到應用伺服器,則需要將應用打包成為一個獨立的jar或者war。然後放到伺服器中去部署。
1、修改pom檔案
加上這句配置,指定maven打包為war包
<packaging>war</packaging>
2、指定容器啟動初始化類
WAR檔案裡沒有啟用Spring MVC DispatcherServlet
的web.xml檔案或者Servlet初始化類,這個WAR檔案就一無是處。Spring Boot出馬了。它提供的SpringBootServletInitializer是一個支援Spring Boot的
SpringWebApplicationInitializer實現。除了配置Spring的DispatcherServlet, SpringBootServletInitializer還會在Spring應用程式上下文裡查詢Filter、Servlet或ServletContextInitializer型別的Bean,把它們繫結到Servlet容器裡。要使用SpringBootServletInitializer,只需建立一個子類,覆蓋configure()方法
來指定Spring配置類。
我們可以直接將Application這個啟動類繼承於SpringBootServletInitializer
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class , args);
}
}
3、這個時候可以進行打包了,clean ,compile,package
報錯:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project spring2: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1
說的很明白,打包找不到web.xml檔案,但是spring boot是不需要這個配置檔案的。原因還是在pom檔案中, 加上maven打包外掛。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
在外掛maven-war-plugin 3.0版本之前,必須將failOnMissingWebXml配置設定為false,也就是不需要web.xml也進行打包。但是在3.0版本,已經可以自動跳過這個地方了,不會強制要求,配置完成之後,再進行一次package。在target目錄下面就能找到需要的war包了。
spring boot將應用打包成war包,不影響在IDEA中執行啟動,日常開發測試不影響,簡直不要太爽。