1. 程式人生 > >springboot專案war包部署並去除專案名訪問

springboot專案war包部署並去除專案名訪問

springboot專案war包部署並去除專案名訪問

springboot專案jar包部署請見:https://blog.csdn.net/rico_zhou/article/details/81283953

springboot內建了Tomcat,並且我們開發環境springboot啟動是可以不帶有專案名訪問的,近日有了這個需求,原本是jar包部署並註冊成服務,現在需要war包部署,以Windows下環境為例。

首先,將pom.xml中打包配置改成war

<!-- war包部署 -->
	<packaging>war</packaging>

然後去除springboot中自帶的tomcat

<!-- SpringBoot Web容器 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- war包部署移除嵌入式tomcat外掛 -->
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

再新增servlet依賴

<!-- war包部署新增servlet依賴 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>

最後如圖:

接下來會出現報錯資訊如果你的專案中使用了Tomcat相關的依賴,如:

import org.apache.tomcat.util.http.fileupload.FileUploadBase.FileSizeLimitExceededException;

沒關係,不用管。接下來更改啟動類,繼承SpringBootServletInitializer ,覆蓋configure(),把啟動類Application註冊進去,如:

/**
 * web容器中進行部署
 * 
 * @author ricozhou
 */
public class RZSpiderServletInitializer extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
    {
        return application.sources(RZSpiderApplication.class);
    }

}

接下來不再需要更改內容,根目錄下(即src和pom.xml同級目錄)執行:mvn clean package

mvn clean package

打包結束後即可在target資料夾中找到war包,或者在eclipse中右擊專案>Run as>Maven install打包結束同樣在target目錄下找到war

接下來開始部署,下載安裝Tomcat,或者解壓tomcat,將war包複製到apache-tomcat-9.0.5\webapps下,到bin目錄下雙擊startup.bat即可啟動,可看到webapps下有war包同名目錄生成,在瀏覽器輸入localhost:8080/專案名,即可訪問。

但是由於我之前是jar包部署,不想加專案名,否則需要更改好多資源路徑太麻煩,怎麼辦呢?

很簡單,將webapps目錄下的ROOT資料夾刪除,將自己的war包更名為ROOT.war,重新啟動tomcat,瀏覽器中輸入localhost:8080即可訪問