Stringboot項目打war包

來源:互聯網
上載者:User

標籤:over   override   檔案   包括   dma   pil   ati   maven倉庫   tap   

正常的boot項目打包打的是jar包,boot項目內建tomcat,一般我打包是:mvn clean install -Dmaven.test.skip 命令

clean 移除所有上一次構建產生的檔案

install 將包安裝至本地倉庫,以讓其它項目依賴

maven.test.skip 跳過測試

啟動並執行命令:java -jar xxx.jar

       由於一些外部的原因我們需要將項目打包成war包,這時候我們可以建立一個新的boot項目選擇war包的方式進行參考,這種方式的是spring官方推薦的打包方式,其實打war包也就進行了一下幾步操作:

1、在pom.xml檔案首部增加<packaging>war</packaging>,/
<groupId>com.uloan.ssm</groupId>
<artifactId>Uloan</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--<packaging>jar</packaging>-->
2、<!--增加下面的依賴覆蓋預設內嵌的Tomcat依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
scope的分類
1.compile:預設值 他表示被依賴項目需要參與當前項目的編譯,還有後續的測試,運行周期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去
2.test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit
3.runtime:表示被依賴項目無需參與項目的編譯,不過後期的測試和運行周期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段
4.provided:打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。相當於compile,但是打包階段做了exclude操作
5.system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地檔案系統拿。需要添加systemPath的屬性來定義路徑

所以我們這裡採用provided,這也是spring官方推薦的方式。

剩下的就是將我們的啟動類進行修改,我們之前啟動類是boot的啟動方式,我們這邊要修改成tomcat的方式,當然之前的boot啟動方式在我們本地依舊保留使用。

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(UloanApplication.class);
    }
}

該類繼承了SpringBootServletInitializer並且重寫了configure方法。

jar包和war包啟動區別
    jar包:執行SpringBootApplication的run方法,啟動IOC容器,然後建立嵌入式Servlet容器
    war包:  先是啟動Servlet伺服器,伺服器啟動Springboot應用(springBootServletInitizer),然後啟動IOC容器
SpringBootServletInitializer執行個體執行onStartup方法的時候會通過createRootApplicationContext方法來執行run方法,接下來的過程就同以jar包形式啟動的應用的run過程一樣了,在內部會建立IOC容器並返回,只是以war包形式的應用在建立IOC容器過程中,不再建立Servlet容器了。

Stringboot項目打war包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.