| Maven五分鐘入門(mén) 安裝 Maven是一款Java工具,如果要進(jìn)行下面的步驟必須安裝Java。 首先下載Maven并且按照步驟將其安裝,然後,在終端或命令提示符下輸入: mvn --version 它會(huì )打印出所安裝的Maven的版本,例如: Maven version: 2.0.8 Java version: 1.5.0_12 OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows" 根據網(wǎng)絡(luò )設置或許會(huì )需要一些其他的設置。如需要的話(huà)請參看 Maven配置指南。 建立一個(gè)工程 在命令行上,運行如下的Maven目標(Goal): mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 如果Maven是全新安裝的,第一次運行時(shí)會(huì )花費一些時(shí)間,因為Maven會(huì )下載最新的套件(插件包和其他文件)到本地,也有可能運行幾次命令才能成功,因為遠程服務(wù)器會(huì )在下載完畢前超時(shí)。不過(guò),有許多方法來(lái)解決這個(gè)問(wèn)題。 你可能注意到create目標(Goal)創(chuàng )建了一個(gè)與套件名(artifactId)同名的目錄,現在切入這個(gè)目錄。 cd my-app 在這個(gè)目錄下會(huì )看到一個(gè) 標準工程結構 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),或簡(jiǎn)稱(chēng)POM。 項目對象模型(POM) pom.xml是Maven工程的核心配置,這個(gè)文件包含了按照需要建立(build)工程時(shí)需要的大部分信息,POM文件非常龐大但可以簡(jiǎn)化,...... <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>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project> 上面步驟做了什么? 剛剛執行了Maven的目標(Goal)archetype:create, 而且向這個(gè)目標傳遞了一些參數。前綴``archetype''是包含此目標的插件的名稱(chēng)。如果對Ant熟悉,你可以認為它和Ant中的"任務(wù)" (task)相似。這個(gè)目標創(chuàng )建了基于這個(gè)archetype的一個(gè)普通的工程。...。例如jboss-maven-plugin的作用是``處理一些 jboss的事務(wù)''。 You executed the Maven goal archetype:create, and passed in various parameters to that goal. The prefix archetype is the plugin that contains the goal. If you are familiar with Ant, you may concieve of this as similar to a task. This goal created a simple project based upon an archetype. Suffice it to say for now that a plugin is a collection of goals with a general common purpose. For example the jboss-maven-plugin, whose purpose is "deal with various jboss items". 編譯這個(gè)工程 mvn package 命令行會(huì )打印出許多動(dòng)作,結尾部分如下: ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 seconds [INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006 [INFO] Final Memory: 3M/6M [INFO] ------------------------------------------------------------------------ 和執行的第一個(gè)命令(archetype:create)不同,你可能注意到第二個(gè)命令只包含一個(gè)單詞 -- package。與目標(Goal)不同,這是一個(gè)``階段''(phase)。階段是建立過(guò)程的生命周期中的一個(gè)步驟,建立過(guò)程包含一系列的步驟。當給出一個(gè)階段時(shí),Maven會(huì )順序執行每個(gè)階段直到到達給出的那個(gè)。例如,如果我們執行編譯(compile)階段,實(shí)際被執行的階段是: 1. validate 2. generate-sources 3. process-sources 4. generate-resources 5. process-resources 6. compile 可以使用下面的命令測試剛剛編譯并且打包的JAR文件: java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App 它會(huì )立刻給出: Hello World! 運行Maven工具 Maven包含的各個(gè)階段 全部項目的列表會(huì )很長(cháng),這里列出的是需要執行的最常見(jiàn)的默認生命周期。 * validate: 檢驗工程是否正確,是否給出了所有必要的信息。 * compile: 編譯工程的源代碼 * test: 使用合適的單元測試框架測試編譯過(guò)的源代碼。此處的測試步驟不需將編譯得到的字節碼打包和部署。 * package: 將編譯得到的字節碼打包成可以用來(lái)將其發(fā)布(distribute)的格式,比如JAR。 * integration-test: 如果需要將這個(gè)包放到特定環(huán)境中進(jìn)行集成測試則處理并部署此包。 * verify: 運行檢驗程序確認這個(gè)包可用且滿(mǎn)足合格條件。 * install: 將此包安裝到本地套件庫,以便其他工程可以在本地通過(guò)依賴(lài)關(guān)系使用此包。 * deploy: 發(fā)布到集成或發(fā)布環(huán)境,拷貝最終完成的包到遠程套件庫,以便和其他開(kāi)發(fā)者或工程共享。 還有兩個(gè)Maven生命周期沒(méi)有在上文列出,是: * clean: 清除被先前建立過(guò)程創(chuàng )建的套件。 * site: 為這個(gè)工程建立網(wǎng)站文檔。 階段實(shí)際上是被映射到底層的目標上。每個(gè)階段按照包的類(lèi)型執行目標。例如,在工程的類(lèi)型是JAR時(shí)執行jar:jar,執行war:war時(shí)的工程類(lèi)型是 - 你已經(jīng)猜到了 - 是WAR。 記住有趣的一點(diǎn)是階段和目標會(huì )可以順序執行。 mvn clean dependency:copy-dependencies package 這個(gè)命令會(huì )清理工程,拷貝依賴(lài)的內容,并且給這個(gè)工程打包(會(huì )執行所有的階段直到到達package階段)。 生成站點(diǎn) Generating the Site mvn site 這個(gè)階段會(huì )基于工程的工程對象模型(POM)生成一個(gè)網(wǎng)站??梢圆榭吹降侥繕嘶蛘军c(diǎn)生成的文檔。 結束語(yǔ) 我們希望這段簡(jiǎn)短的介紹能夠使您對Maven的靈活性開(kāi)始感興趣,不過(guò)這是一篇十分簡(jiǎn)練的快速入門(mén)指南?,F在您可以準備了解關(guān)於剛剛執行的那些動(dòng)作的具體信息,請參看 Maven入門(mén)指南。 |
聯(lián)系客服