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

Maven 2 實戰:從零構建 Java Web 應用完整生命週期

     編輯:Java 相關知識

Maven 不只是構建工具

Maven 通過 約定優於配置、生命週期管理、依賴傳遞、倉庫機制,將專案管理提升到新高度。本文以 ToDoTasks Web 應用為例,演示從源碼結構到 WAR 包部署的全流程。

標準目錄結構

project-root/
├── pom.xml                    # 專案對象模型 (POM)
└── src/
    ├── main/
    │   ├── java/              # 主代碼
    │   │   └── com/builder/uk/todotasks/
    │   ├── resources/         # 主資源文件
    │   └── webapp/            # Web 應用資源
    │       ├── META-INF/
    │       └── WEB-INF/
    └── test/
        └── java/              # 測試代碼
            └── com/builder/uk/todotasks/

無 lib/ 目錄——依賴由 Maven 從倉庫解析。

POM 核心配置解析

1. 坐標與打包

<groupId>uk.builder</groupId>
<artifactId>todotasks</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>war</packaging>        <!-- 決定生命週期:編譯、測試、打 WAR、部署 -->
<name>ToDoTasks</name>

2. 依賴管理

<dependencies>
  <!-- 編譯期依賴,會打入 WEB-INF/lib -->
  <dependency>
    <groupId>jdbm</groupId>
    <artifactId>jdbm</artifactId>
    <version>1.0</version>
  </dependency>

  <!-- 中央倉庫無 DWR 2.0M3,需手動安裝到本地倉庫 -->
  <dependency>
    <groupId>dwr</groupId>
    <artifactId>dwr</artifactId>
    <version>2.0M3</version>
  </dependency>

  <!-- provided:編譯期需要,運行期由容器提供(Servlet API) -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.4-20040521</version>
    <scope>provided</scope>
  </dependency>

  <!-- test:僅測試類路徑可見 -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>

3. 構建配置:JDK 1.5 編譯 + Cargo 部署

<build>
  <finalName>todotasks</finalName>
  <plugins>
    <!-- 編譯器插件:指定源/目標版本 -->
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.0</version>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>

    <!-- Cargo:將 WAR 部署到容器 (Jetty/Tomcat/JBoss 等) -->
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
    </plugin>
  </plugins>
</build>

生命週期實戰命令

命令執行階段產出
mvn compile編譯主代碼target/classes/
mvn test-compile編譯測試代碼target/test-classes/
mvn test運行單元測試target/surefire-reports/
mvn package打包 WARtarget/todotasks.war
mvn install安裝到本地倉庫~/.m2/repository/uk/builder/todotasks/2.0-SNAPSHOT/
mvn cargo:start啟動內嵌 Jetty 部署 WARhttps://localhost:8080/todotasks/
mvn site生成專案站點target/site/
mvn clean清理 target 目錄--

缺失依賴處理實戰:DWR 2.0M3

中央倉庫無此版本,Maven 報錯並給出安裝指令:

mvn install:install-file \
  -DgroupId=dwr -DartifactId=dwr -Dversion=2.0M3 \
  -Dpackaging=jar -Dfile=/path/to/dwr.jar

下載 JAR → 執行上述命令 → 重新 mvn install 即可。

代碼遷移要點:從 Swing 到 Web

  • 移除 Main.java、Controller.java、Swing UI 類
  • TasksFactory 引入靜態單例模式懶加載 Tasks 實例,供 Web 層調用
  • DWR 2.0M3 引入 ScriptBuffer 替代字符串拼接生成 JavaScript,鏈式調用:sb.appendScript("...").appendData(id).appendScript(";")
  • 前端優化:增量 DOM 更新替換全量重載

Maven 核心價值回顧

  1. 約定目錄結構 → 零配置上手
  2. 依賴傳遞 → 一行配置引入完整依賴圖
  3. 生命週期 → 一條命令貫穿構建、測試、打包、部署
  4. 倉庫機制 → 團隊/組織共享構件,消除 JAR 地獄
  5. 插件生態 → 編譯、測試、報告、部署、文檔生成全覆蓋

延伸學習資源

  • Maven 官網:maven.apache.org
  • 《Maven 應用指南》免費電子書(需註冊):Mergere 出版
  • Super POM 源碼:理解所有默認行為的來源
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved