Spring Boot 部署到tomcat
Spring Boot 的jar轉war
修改啓動類
- 默認的啓動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* @SpringBootConfiguration :sprring boot配置類
* @Configuration : spring配置類
* @Component :有此註解代表是一個spring組件
* @EnableAutoConfiguration 自動配置
* @AutoConfigurationPackage 自動配置包
* @Import({Registrar.class}) 自動配置 ‘包註冊’
* @Import({AutoConfigurationImportSelector.class}) 自動配置導入選擇
* getAutoConfigurationEntry方法下的
* List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes); 獲取所有的配置
* SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
* return EnableAutoConfiguration.class; 加載配置
* 配置的核心文件 META-INF/spring.factories.(spring-boot-autoconfigure)
*/
@SpringBootApplication()
// @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) //去掉springboot 默認的數據源配置
public class ElasticsearchApplication {
public static void main(String[] args) {
SpringApplication.run(ElasticsearchApplication.class, args);
}
}
- 實現SpringBootServletInitializer,重寫configure()方法
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ElasticsearchApplication.class);
}
}
修改pox文件
- 修改打包方式(修改
packaging
屬性)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.merit</groupId>
<artifactId>elasticsearch</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <!-- 將 jar修改爲 war -->
<name>Elasticsearch</name>
<description>Demo project for Spring Boot</description>
IDEA Tomcat部署
去除衝突
- 移除
spring-boot-starter-web
的tomca包(如果添加了spring-boot-starter-tomcat
的依賴請注掉)
<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>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>-->
- 打包名字修改
<build>
<!--打包後的名字-->
<finalName>Elasticsearch</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 在工作中,很多情況下我們打包是不想執行測試用例的可能是測試用例不完事,或是測試用例會影響數據庫數據跳過測試用例執 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--跳過項目運行測試用例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<!--自定義mapper時需要添加添加的-->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
運行配置
-
選擇啓動配置,添加Tomcat
-
配置deployment,選擇項目對應的war
- Application context 爲上下文路徑,一般會默認追加到訪問路徑處,URL爲項目的根路徑
- 選擇maven清除緩存,點擊install(install其實是包含clear命令的)進行打包,選擇tomcat點擊運行即可
- 訪問地址爲tomcat上顯示的地址,idea啓動時會自動打開瀏覽器跳轉到對應地址的
單獨Tomcat部署
在maven選擇install後會在target文件夾下生成對應的war,將war包複製到tomcat的webapper下即可