SpringBoot專案如何打包部署到tomcat中去

網際網路渣渣東發表於2019-07-25

SpringBoot專案如何打包成war包

       最近朋友做了一個springboot的小專案,需要釋出到tomcat上去執行起來,但是打包的時候卻發現,只能打包成jar包的形式,無法打包成war包,今天把自己的解決方案寫下來,以供參考(eclipse版本):
       一共有兩種解決方案:

方案一:

       如果是新建的專案,那麼可以在一開始就選擇打包方式為WAR,這樣打包成的專案就是war包的形式。
springboot專案的建立
檢視我們的pom.xml檔案:
打包方式
tomcat

此處的 provided代表了springboot自帶的tomcat在編譯的時候需要,而釋出的時候忽略。
       啟動類的目錄中多了ServletInitializer.java類,大家可以私下去了解它,此處不做解釋。

       這是第一種方案中打包war包的形式,以上這些步驟缺一不可,所以如果大家打包失敗,可以看看pom.xml檔案和啟動類的目錄是否與小編一致。

方案二:
       如果現在的專案已經是一jar包的方式建好了的專案,可以對專案做出以下調整修改:

  • 修改pom.xml檔案

       1.修改打包方式:

<packaging>war</packaging>

       2.除嵌入式tomcat外掛

       在pom.xml裡找到spring-boot-starter-web依賴節點,在其中新增如下程式碼:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除嵌入式tomcat外掛 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

       3.新增servlet-api 的依賴:

dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

       4.定義打包的專案名稱(可不設定):

<build>
	    <finalName>SpringBoot_MyBatis</finalName>
		<plugins>
	        <plugin>
	            <groupId>org.apache.maven.plugins</groupId>
	            <artifactId>maven-surefire-plugin</artifactId>
	            <configuration>
	                <testFailureIgnore>true</testFailureIgnore>            
	            </configuration>
	        </plugin>
	    </plugins>
	</build>
  • 修改啟動類:
package com.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@MapperScan("com.demo.dao")
//繼承SpringBootServletInitializer類
public class SpringBootMybatisApplication extends SpringBootServletInitializer{

	public static void main(String[] args) {
		SpringApplication.run(SpringBootMybatisApplication.class, args);
		System.out.println("啟動成功");
	}
	/**
	 *新增此方法
	 */
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		// 注意這裡要指向原先用main方法執行的Application啟動類
		return builder.sources(SpringBootMybatisApplication .class);
	}
}

打包:
       選中專案,右鍵–>Run AS --> Maven Install即可,找到打包好的war包,放入tomcat的webapps目錄下面,啟動即可。

注意:
       我們的SpringBoot的專案訪問路徑為:http:ip/port/…後面的是requestMapping的值,而部署到了tomcat中訪問的地址應該為:http:ip/port/專案名稱/…

相關文章