1. 程式人生 > >Spring Boot發布將jar包轉為war包。

Spring Boot發布將jar包轉為war包。

args -- 暫時 代碼 except 比較 @override ride lean

Spring Boot是支持發布jar包和war的,但它推薦的是使用jar形式發布。使用jar包比較方便,但如果是頻繁修改更新的項目,需要打補丁包,那這麽大的jar包上傳都是問題。所以,jar包不一定合適適用所有的場景,如war包更合適,你可以嘗試轉為傳統的war包,這樣打補丁包可能更方便。

如何配置打war包呢?

以下配置以Maven為說明講解,Gradle的查看類似配置。

1、修改Spring Boot啟動類

啟動類繼承SpringBootServletInitializer類,並覆蓋configure方法。

下面是Spring Boot提供的示例代碼。

@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);
    }

}

2、修改jar為war包形式

在pom文件中,添加war包配置。

<packaging>war</packaging>

如果不添加,默認為jar包。

3、去除Spring Boot內置Tomcat

修改自帶tomcat依賴範圍為provided,防止與外部tomcat發生沖突。

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

4、添加war包打包插件

如果你用的是繼承spring-boot-starter-parent的形式使用Spring Boot,那可以跳過,因為它已經幫你配置好了。如果你使用的依賴spring-boot-dependencies形式,你需要添加以下插件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

failOnMissingWebXml需要開啟為false,不然打包會報沒有web.xml錯誤。

如何打war包?

打war包方式和打jar包方式一樣,沒有區別。

  • 在Maven中使用mvn clean package命令即可打包。

  • 在Idea中可以這樣設置打包:

技術分享圖片

改在war包後,發現打war包比打jar要上好多。

jar包轉war包有什麽影響?

1、application配置文件中的server.xx等關於容器的配置就無效了,改配置需要在外部tomcat中進行。

2、Spring Boot的升級是否需要Tomcat跟著升級?需要觀察。

3、打war包比打jar明顯要變慢好多。。

暫時還沒遇到其他問題,大家對此有什麽看法都可以在下方留言。

Spring Boot發布將jar包轉為war包。