Maven 5 分鐘入門教程

ieqq發表於2012-01-20
[b]Maven 5 分鐘入門教程[/b]
[*][b]安裝[/b]
Maven是一個Java工具,所以你得先把Java執行時環境安裝好才能繼續。
首先, 下載並安裝好Maven,然後按下面的指導一步步執行. 在命令列環境下面輸入下面的指令:
mvn --version

你應該能看到類似下面這樣的一些關於Maven的版本資訊:
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: D:\apache-maven-3.0.3\bin\..
Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
Java home: E:\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"

鑑於你的網路配置,你可能需要一些其它的配置,你可以到Apache的官方網站上看更詳細的配置。[url]http://maven.apache.org/guides/mini/guide-configuring-maven.html[/url]不過入門階段,預設的配置也就夠了。
[*][b]用命令列建立一個 Project:[/b]
找個合適的地方建個資料夾神馬的,然後在命令列環境裡面cd到這個目錄下面來。執行下馬的語句。你第一次看不懂不要緊,看著看著你就慢慢的懂了。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果你剛剛安裝Maven,這個命令執行的時間會比較長,因為它會到網上做一些更新,如果你網速不好,那麼時間就更久了。所以你就多念幾聲“阿彌陀佛”,保佑它順利執行完。如果你人品好的話,那麼很快,你就可以在當前資料夾下面看到這麼一堆東西了。你可以執行Tree 命令看看生成的目錄結構。
Tree . (仔細看,tree 後面有個小點哦,表示當前目錄。)

my-app
|-- pom.xml (這個其實是最終於的產物。)
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java (這個是生存的SourceCode)
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java(這個是測試的Code,是不是感覺超牛B,超變態)

[*][b]POM配置檔案[/b]
Pom.xml是工程Maven配置檔案的核心,它是個包含了主要配置資訊的單一檔案。通過這個配置檔案,你可以安裝你想要的方式來編譯整個工程。它的複雜性確實有點望而生畏,所以你將來需要花時間去慢慢熟悉它,這樣你的工作才能更有效率。
<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>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<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>

[*][b]剛才這個命令列做了哪些事情?[/b]
這個命令列執行了一個Maven的目標任務(goal)[b] archetype:generate[/b], 我們傳了很多引數給這個目標任務。字首[b]archetype [/b]表示一個外掛. 外掛封裝了很多目標任務(goal)。這個概念跟Ant裡面的類似。你可以到Apache官網瞭解更多關於外掛的資訊。[url]http://maven.apache.org/plugins/index.html[/url]這裡提供了各種各樣的外掛來滿足不同的需要。每個都夠你折騰一段時間。
[*][b]Build the Project[/b]

cd my-app
mvn package

執行這個指令是幫你把專案打包,當然所以打包依賴的任務也都會自動被執行到。這根Ant大同小異。 你可以在控制檯看到這樣的資訊。

...
[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),你可能已經注意到這個命令列很短,後面跟了個引數[B] package[/B],這個引數和前面不一樣,它不是什麼外掛,也不是什麼目標任務。Maven給它起了個新名字(phase),我們暫時翻譯成狀態。可以理解為專案的一中狀態。當你輸入這個指令後,Maven幫你做了下面這些事情:
[list]
[*]1.validate
[*]2.generate-sources
[*]3.process-sources
[*]4.generate-resources
[*]5.process-resources
[*]6.compile
[/list]
執行[b] Tree . [/b]命令,你可以看到它生存了新的目錄。
├─src
│ ├─main
│ │ └─java
│ │ └─com
│ │ └─mycompany
│ │ └─app
│ └─test
│ └─java
│ └─com
│ └─mycompany
│ └─app
└─target
├─classes
│ └─com
│ └─mycompany
│ └─app
├─maven-archiver
├─surefire-reports
└─test-classes
└─com
└─mycompany
└─app

其中還打了個jar包 my-app-1.0-SNAPSHOT.jar

[*][b]Maven Phases(Maven 預定義指令)[/b]
下面列舉了Maven最常用的一些指令
[list]
[*][b]validate[/b]: validate the project is correct and all necessary information is available
[*][b]compile[/b]: compile the source code of the project
[*][b]test[/b]: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
[*][b]package[/b]: take the compiled code and package it in its distributable format, such as a JAR.
[*][b]integration-test[/b]: process and deploy the package if necessary into an environment where integration tests can be run
[*][b]verify[/b]: run any checks to verify the package is valid and meets quality criteria
[*][b]install[/b]: install the package into the local repository, for use as a dependency in other projects locally
[*][b]deploy[/b]: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
[*][b]clean[/b]: cleans up artifacts created by prior builds
[*][b]site[/b]: generates site documentation for this project
[/list]
對於上面的這些指令,我們建議你每個都執行一下,看看什麼效果。對你瞭解Maven的功能很有幫助。
[*][b]生成你的專案站點[/b]
mvn site

這個比較有意思,會幫你的Project生存一個站點。
This phase generates a site based upon information on the project's pom. You can look at the documentation generated under target/site.
如果你有興趣的話,可以到官網瞭解更多的資訊。
[url]http://maven.apache.org/guides/getting-started/index.html[/url]

相關文章