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 從倉庫解析。
<groupId>uk.builder</groupId>
<artifactId>todotasks</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>war</packaging> <!-- 決定生命週期:編譯、測試、打 WAR、部署 -->
<name>ToDoTasks</name>
<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>
<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 | 打包 WAR | target/todotasks.war |
mvn install | 安裝到本地倉庫 | ~/.m2/repository/uk/builder/todotasks/2.0-SNAPSHOT/ |
mvn cargo:start | 啟動內嵌 Jetty 部署 WAR | https://localhost:8080/todotasks/ |
mvn site | 生成專案站點 | target/site/ |
mvn clean | 清理 target 目錄 | -- |
中央倉庫無此版本,Maven 報錯並給出安裝指令:
mvn install:install-file \
-DgroupId=dwr -DartifactId=dwr -Dversion=2.0M3 \
-Dpackaging=jar -Dfile=/path/to/dwr.jar
下載 JAR → 執行上述命令 → 重新 mvn install 即可。
Main.java、Controller.java、Swing UI 類TasksFactory 引入靜態單例模式懶加載 Tasks 實例,供 Web 層調用ScriptBuffer 替代字符串拼接生成 JavaScript,鏈式調用:sb.appendScript("...").appendData(id).appendScript(";")