1. 程式人生 > >spring boot 專案由jar轉war

spring boot 專案由jar轉war

spring boot 專案由jar轉war

spring boot 快速構建web專案,官方推薦使用jar型別內嵌tomcat等容器的方式啟動及部署,使用過程中難免要使用外部容器部署,可以通過以下方式轉化:

第一步:

轉化jar型別專案為可部署的war檔案的第一步是提供一個SpringBootServletInitializer子類和覆蓋它的configure方法。通常做法是,讓應用程式的入口類繼承SpringBootServletInitializer:

@SpringBootApplication
public class Application extends SpringBootServletInitializer
{
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }

注意:不同版本繼承的SpringBootServletInitializer

類不同
1.3.3版本為org.springframework.boot.context.web.SpringBootServletInitializer
1.4.1版本為org.springframework.boot.web.support.SpringBootServletInitializer

第二步:

若專案使用maven並且pom.xml繼承了spring-boot-starter-parent,需要更改pom.xml中的packagingwar型別:

<packaging>war</packaging>

若使用Gradle:


apply plugin: 'war'

第三步:

最後一步是確保嵌入servlet容器不干擾外部servlet容器部署war檔案。需要標記嵌入servlet容器的依賴為provided
若使用Maven:

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

若使用Gradle:

dependencies {
    // …
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // …
}

若war在部署到容器中時遇到Project facet Cloud Foundry Standalone Application version 1.0 is not supported.錯誤;
解決辦法: 專案右鍵Build Path -> Configure Build Path -> Project facet -> 勾掉Cloud Foundry Standalone Application
這裡寫圖片描述
重新編譯打包即可。

參考 :

的以下兩小節
81.1 Create a deployable war file
63.2 Packaging executable jar and war files

我是結尾。