解決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!

推薦閱讀: