圖片來源: http://maven.apache.org/ |
1. Maven強調的是慣例。也就是說也的彈性不如Ant。或許Ant可以做到的事 Maven也可以做到,但是相對上來說,可能需要花必較多的設定稅是較多的心力去學習如何設定。
2. Maven的架構。Maven 有一個集中式管理的repository,而且針對於不同版本的jar檔,repository也會保存不同版本的jar 檔;然後供各個project依照各project的需求,去引用相關的jar檔。
3. Maven有很多plugin來完成各項動作。如果沒有這些plugin,Maven也會自動去下載這些plugin。
4. Maven的生命週期。Maven提供了一些固定的lifecycle(或是build lifecycle),例如Default、Clean、Site。Lifecycle下有分Phase(或是build phase),例如Default lifecycle下就有這以下的pahse:
validate:驗證專案正確性以及所有必要資訊已備妥。
compil:編譯專案原始碼。
test:進行單元測試。
package:將相關檔案進行封裝,例如產生JAR檔案。
integration-test:進行整合測試。
verify:驗證檔案封裝是否正確。
install:將封裝的檔案安裝至本地貯藏室(Local repository)。
deploy:部署檔案。
Phase又由Goal(或是plugin goal)組成。不過Goal與Phase的關係,並不像樹狀一樣,特定的goal會隸屬於特定的phase,而是一種多對多的關係。Goal的語法比較特殊,大概會像 dependency:copy-dependencies 這樣子。
原則上Maven的用意,是讓你下一行指令,就可以進行deploy的動作。例如:最簡單的設定檔,會是像這樣子:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> </project>只要執行一行命令,就可以產生出war、或是jar、或是class:
mvn install然而我們之前有提到Maven強調的是慣例,所以產生出來的war、jar或是class,跟我們以往使用Eclipse所產生東西,目錄、結構都不太一樣。如果你的jar檔或是war檔有使用到其他相關的jar檔,開發建構的流程與相關檔案架構也都跟以往所熟悉的Eclipse架構不太一樣。這邊Eclipse的使用者在上手Maven時是需要注意的。
沒有留言 :
張貼留言