Spring Boot 發佈 jar 包轉爲 war 包祕籍

Spring Boot是支持發佈jar包和war的,但它推薦的是使用jar形式發佈。使用jar包比較方便,但若是是頻繁修改更新的項目,須要打補丁包,那這麼大的jar包上傳都是問題。因此,jar包不必定合適適用全部的場景,web

如war包更合適,你能夠嘗試轉爲傳統的war包,這樣打補丁包可能更方便。spring

如何配置打war包呢?

如下配置以Maven爲說明講解,Gradle的查看相似配置。apache

一、修改Spring Boot啓動類tomcat

啓動類繼承 SpringBootServletInitializer類,並覆蓋 configure方法。微信

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

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

二、修改jar爲war包形式maven

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

<packaging>war</packaging>

若是不添加,默認爲jar包。spring-boot

三、去除Spring Boot內置Tomcatpost

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

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

四、添加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 cleanpackage命令便可打包。

  • 在Idea中能夠這樣設置打包:

        

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

jar包轉war包有什麼影響?

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

二、Spring Boot的升級是否須要Tomcat跟着升級?須要觀察。

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

 

轉自微信公衆號Java技術棧。

相關文章
相關標籤/搜索