Maven使用簡要說明
前置條件
首先你要會安裝軟件,如果不會的話,問你辦公室、學校裏的人,或者花錢請人給你解釋一下。
安裝
Maven是一個java工具,所以你必須安裝了java才能繼續下面的步驟。
首先,下載maven,然後安裝。這樣你就可以使用如下的命令了:
- mvn --version
這樣就會打印你安裝的maven版本信息,像下面這樣:
- Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
- Maven home: D:\apache-maven-3.0.5\bin\..
- Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
- Java home: C:\Program Files\Java\jdk1.6.0_25\jre
- Default locale: nl_NL, platform encoding: Cp1252
- OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
創建工程
你需要一個目錄來存放你的工程文件。先創建一個文件夾,然後在文件夾下打開命令行輸入以下命令:
- mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
如果你剛剛安裝maven,當你第一次運行的時候可能需要一會。因爲要下載一些需要的jar和其他文件到你的倉庫。你可能需要多試幾次才能成功,因爲遠程的服務器可能會在你下載完成之前超時。不用擔心我們有辦法解決。
你可能會注意到生成目標創建了一個artifactId的同名目錄,打開這個目錄。
- cd my-app
在這個目錄裏你會看到標準的工程目錄結構:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
src/main/java 目錄包含了項目的代碼, src/test/java 目錄包含了測試代碼, pom.xml 文件是這個工程的工程對象模型(Project Object Model 或 POM)。
POM
在Maven裏 pom.xml 文件是項目設置的核心。它正是你想要的那種一個設置文件就包含生成一個工程的大部分設置的方式。POM的複雜性可能讓你感到恐懼,但是並沒有必要去完全理解所有的東西,只要能有效的使用它就行了。 這個工程的POM像下面這樣:
- <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>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.2</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
我剛做了什麼?
你執行了Maven 的目標 archetype:generate ,並且傳入了不同的參數。前綴archetype是一個包含目標的插件。如果你熟悉Ant,你會認爲這個和Ant的task很相似。goal以archetype爲基礎創建一個簡單的工程。現在就可以說明一個插件是一個具有一般通用目的的目標集合。例如jboss-maven-plugin的目的是“處理不同的jboss項目。
構建工程
- mvn package
命令行會輸出許多信息,一下面的信息結尾:
- ...
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESSFUL
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 2 seconds
- [INFO] Finished at: Thu Jul 07 21:34:52 CEST 2011
- [INFO] Final Memory: 3M/6M
- [INFO] ------------------------------------------------------------------------
不像第一個命令的執行 (archetype:generate) ,你可能注意到了第二個就一個簡單的單詞”- package“而不是一個目標。這是一個階段。一個階段就是構建生命週期裏的一步,構建生命週期就是一個有順序的階段序列。當給出一個階段,Maven將執行序列中的每一個階段包括定義的。例如我們執行compile階段,事實上以下階段都會得到執行:
- (驗證)validate
- (生成源碼)generate-sources
- (處理源碼)process-sources
- (生成資源)generate-resources
- (處理資源)process-resources
- (編譯)compile
你可以用下面的命令測試新編譯生成的JAR包:
- java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
將會打印下面的範例:
- Hello World!
運行Maven工具
Maven階段
儘管很難算得上是一份詳盡的清單,但這些都是最常見的被執行的默認生命週期階段。
- 檢查(validate): 檢查工程是否正確,所有必要的信息是否可用。
- 編譯(compile): 編譯這個工程的源碼。
- 測試(test): 用合適的單元測試框架測試編譯好的代碼。這些測試不應該要求代碼被打包或部署。
- 打包(package): 將編譯好的代碼打包成分發的格式,例如JAR。
- 整體測試(integration-test): 將包部署到可以做整體測試的環境中。
- 認證(verify): 運行任何的檢查程序確認包是有效的且符合質量標準的。
- 安裝(install): 將包安裝到本地倉庫,以便在其他的工程中作爲本地依賴添加。
- 部署(deploy): 在完整的或是發佈環境中執行,複製最終的包到遠程倉庫,以便分享給其他開發者或工程。
除此之外還有兩個階段:
- 清空(clean): 清空之前構建的工程。
- 網站(site): 生成網站文檔。
階段實際上被映射到下面的目標。目標執行的每個階段取決於工程的打包類型。例如,如果工程類型爲JAR那就執行jar:jar ,如果是WAR就執行war:war。有意思的是階段和目標可以被按順序執行:
- mvn clean dependency:copy-dependencies package
這個命令會清空項目,複製依賴並且打包工程(當然,由包決定執行的所有階段)。
生成網站
- mvn site
這個階段生成的網站取決於工程的pom信息,你可以在target/site下查看生成的文檔。