SpringBoot使用Gradle構建war包的步驟
只是出於好奇才打成war包,正常情況下不推薦war。打成jar包可以方便的使用外部配置,並且啟動速度更快,也方便部署到docker等容器中。
一、應用外掛
1.1 gradle
在gradle.build檔案中新增apply plugin: war
:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
1.2 maven
需把元素的值從jar改為war。
<packaging>war</packaging>
二、新增類
這樣就能生成WAR檔案了。但如果WAR檔案裡沒有啟用Spring MVC DispatcherServlet 的web.xml檔案或者Servlet初始化類,這個WAR檔案就一無是處。
此時就該Spring Boot出馬了。它提供的SpringBootServletInitializer是一個支援 Spring Boot的Spring WebApplicationInitializer實現。除了配置Spring的Dispatcher- Servlet,SpringBootServletInitializer還會在Spring應用程式上下文裡查詢Filter、 Servlet或ServletContextInitializer型別的Bean,把它們繫結到Servlet容器裡。
要使用SpringBootServletInitializer,只需建立一個子類,覆蓋configure()方法 來指定Spring配置類。
@SpringBootApplication
public class SSOApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SSOApplication.class, args);
}
/**
*重寫configure
* @param builder
* @return
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SSOApplication.class);
}
}
雖然應用程式裡還有其他Spring配置類,但沒有必要在這裡把它們全部註冊進來。 Application類上添加了@SpringBootApplication註解。這會隱性開啟元件掃描,而元件掃 描則會發現並應用其他配置類。
三、構建
現在我們可以構建應用程式了。如果使用Gradle,你只需呼叫build任務即可:
gradle build
沒問題的話,你可以在build/libs裡看到一個名為readinglist-0.0.1-SNAPSHOT.war的檔案。
對於基於Maven的專案,可以使用package:
mvn package
成功構建之後,你可以在target目錄裡找到WAR檔案。
來源:springboot實戰