1. 程式人生 > >SpringBoot使用Gradle構建war包的步驟

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實戰