解決Intellij IDEA覆蓋tomcat配置的問題
剛剛遇到bug,每次修改自己環境裡tomcat的server.xml,再次在Intellij裡啟動tomcat之後,修改就消失瞭,心態很炸裂hhh
研究瞭好久,最終把目光放在瞭下圖所示的地方。
一開始以為是自己環境變量沒配,但是看瞭一下發現沒問題,又在cmd裡試著運行瞭一遍,發現CATALINA_BASE跟上圖裡的不一樣,查瞭一些資料後判斷是是intellij自動用自己tomcat裡的conf把我tomcat裡的給override瞭。
找到原因就很容易解決瞭,像圖裡這樣告訴Intellij,誰才是能配置CATALINA_BASE的人就行啦~
這麼看來Intellij也有點算易學難精,環境配置還是個大坑啊。
補充知識:IntelliJ IDEA SpringBoot 使用第三方Tomcat以及部署
一、第三方Tomcat部署
目標:把spring-boot項目按照平常的web項目一樣發佈到tomcat容器下
1. 修改打包形式
在pom.xml裡設置 <packaging>war</packaging>
<groupId>com.study</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <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> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>
4. 修改啟動類,並重寫初始化方法
我們平常用main方法啟動的方式,都有一個App的啟動類,代碼如下:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
直接讓啟動類繼承SpringBootServletInitializer,並覆蓋configure()方法:
@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 註意這裡要指向原先用main方法執行的Application啟動類 return builder.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
5. 打包部署
IDEA上方工具欄:Run->Edit Configurations
打開配置界面,左邊”+”號->Tomcat Server->Local
完成後如下所示
然後在Deployment中點擊”+”號,選擇client:war,這樣每次server啟動的時候都會去打包一次war包(個人理解),然後去運行war包。
然後保存就可以瞭,然後啟動項目就運行起來瞭。
到此這篇關於解決Intellij IDEA覆蓋tomcat配置的問題的文章就介紹到這瞭,更多相關IDEA覆蓋tomcat配置問題內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- SpringBoot項目如何打war包問題詳解
- centos環境下使用tomcat 部署SpringBoot的war包
- Spring Boot如何移除內嵌Tomcat,使用非web方式啟動
- 如何將SpringBoot項目打成 war 包並部署到Tomcat
- springboot項目如何打war包流程的方法