SpringBoot專案打包與部署
阿新 • • 發佈:2021-07-03
springboot的war想要在tomcat伺服器上執行,必須新增配置。
1.繼承並重寫
讓啟動類繼承SpringBootServletInitializer,並重寫configure方法,關鍵程式碼如下
@SpringBootApplication
public class UploadDemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(UploadDemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
若在建立SpringBoot專案時已經自動建立,則跳過此步。
2.修改pom檔案
2.1 在pom檔案中新增打包方式為war
<groupId>com.example</groupId> <artifactId>upload-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>upload-demo</name> <!--配置打包方式war--> <packaging>war</packaging> <description>Demo project for Spring Boot</description>
2.2 修改tomcat依賴
1)對內建的tomcat進行設定
由於springboot有內建的tomcat,所以在外部tomcat中部署時,必須對內建的tomcat進行設定,有兩種方式,二選一即可,本人覺得第二種方式更簡單。
第一種方式:移除內建的tomcat
在web的依賴中移除tomcat,並新增servlet依賴
<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> <!--servlet的 api--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
第二種方式:修改tomcat的使用範圍
我們在開發時需要內建的tomcat,而在部署時不需要,就可以設定tomcat只在編譯和測試時生效。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
2)在build中指定打包的專案名稱
<build> <finalName>upload-demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
要注意,tomcat進行部署的時候,訪問需要帶專案名稱,所以就指定了打包後的名稱。為了在開發環境和正式環境的一致性,請在application.properties檔案中配置訪問介面時帶指定的路徑(或專案名)。配置後在開發環境訪問介面時,必須加配置的路徑才能訪問。
server.servlet.context-path=/upload-demo
3.打包部署
清理專案,進行打包:
把這個war包放到tomcat的webapps中,然後啟動,訪問即可。(需帶專案名稱)