首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Eclipse Maven 專案保持原目錄結構配置 Resin 運行環境:雙軌並行實戰

     編輯:Java 綜合教學

核心衝突:Maven 標準目錄 vs Eclipse WTP 目錄

項目Maven 專案Eclipse Web 專案
編譯輸出target/classesBuild Path 指定資料夾(預設 bin)
Web 根目錄src/main/webappWebContent / WebRoot
依賴 JARtarget/<artifactId>/WEB-INF/lib (package 後)WebContent/WEB-INF/lib (手動/Build Path)

Resin/Tomcat 等容器期望標準 Web 結構:WEB-INF/classes、WEB-INF/lib 位於 Web 根目錄下。Maven 預設結構與此不符,導致 Eclipse 直接啟動 Resin 失敗。

方案一:偽裝標準目錄(推薦,零侵入 Resin 配置)

  1. 修改輸出路徑:專案右鍵 → Properties → Java Build Path → Source → Default output folder → 設為 src/main/webapp/WEB-INF/classes。
  2. 同步依賴 JAR:執行 mvn war:exploded 或手動將 target/.../WEB-INF/lib 複製到 src/main/webapp/WEB-INF/lib。(建議用 maven-war-plugin 配置 webappDirectory 自動同步)。
  3. Resin 配置保持預設:root-directory="src/main/webapp" 即可識別。

優點:專案仍是純 Maven 結構,Eclipse 直接 Run/Debug,熱部署支援良好。
缺點:src/main/webapp 下產生編譯產物與複製 JAR,需加入 .gitignore;mvn clean 會清空 target 但不清理這裡,需額外腳本。

方案二:修改 Resin 配置指向 Maven 輸出目錄(純配置法)

編輯 resin.conf 或 app-default.xml:

<host id="" root-directory=".">
    <web-app id="/myapp" root-directory="D:/workspace/myapp/src/main/webapp" />
</host>

<class-loader>
    <!-- 相對 webapp 根目錄向上三層到專案根目錄,再進 target -->
    <compiling-loader path="../../../target/classes" />
    <library-loader path="../../../target/myapp/WEB-INF/lib" />
</class-loader>

關鍵路徑計算:
webapp → main → src → project-root → target/classes → ../../../target/classes。
finalName (pom.xml <build><finalName>myapp</finalName>) 決定 WAR 展開資料夾名。

優點:不污染 src/main/webapp,Maven 結構純淨。
缺點:Resin 配置強耦合專案絕對路徑,團隊協作需統一路徑或用環境變數;熱部署偵測可能不如方案一靈敏。

進階:Maven War Plugin 自動同步到 src/main/webapp

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.2</version>
    <configuration>
        <webappDirectory>src/main/webapp</webappDirectory> <!-- 關鍵 -->
        <warSourceDirectory>src/main/webapp</warSourceDirectory>
    </configuration>
</plugin>

執行 mvn war:exploded 即自動將編譯類別與依賴 JAR 同步至 src/main/webapp/WEB-INF,配合方案一實現「Maven 命令構建 + Eclipse 直接啟動」無縫切換。

環境隔離原則

「本地開發用方案一(偽裝目錄),測試/生產環境嚴禁修改容器配置指向原始碼目錄,必須使用 mvn package 產出標準 WAR 部署。」

  • 開發機:Eclipse + Resin 直接掛載 src/main/webapp(方案一)。
  • CI/CD:mvn clean package → 產出 target/myapp.war → 部署至獨立 Resin/Tomcat。
  • 容器配置:生產環境 root-directory 指向部署目錄(如 /opt/resin/webapps/myapp),class-loader 走預設 WEB-INF/classes、WEB-INF/lib。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved