Maven使用教程(转)
Maven使用教程
1. Maven簡(jiǎn)介
1. Maven的出發(fā)點(diǎn)
在進(jìn)行軟件開發(fā)的過程中,無論什么項(xiàng)目,采用何種技術(shù),使用何種編程語言,我們 都要重復(fù)相同的開發(fā)步驟:編碼,測(cè)試,打包,發(fā)布,文檔。實(shí)際上這些步驟是完全重復(fù)性的工作。那為什么讓軟件開發(fā)人員去重復(fù)這些工作?開發(fā)人員的主要任務(wù) 應(yīng)該是關(guān)注商業(yè)邏輯并去實(shí)現(xiàn)它,而不是把時(shí)間浪費(fèi)在學(xué)習(xí)如何在不同的環(huán)境中去打包,發(fā)布,。。。
Maven正是為了將開發(fā)人員從這些任務(wù)中解脫出來而誕生的。?
2. Maven能做什么?
?Maven是由早期為Jakarta Turbine定制的構(gòu)建工具發(fā)展而來的,現(xiàn)在成為了一個(gè)獨(dú)立的軟件項(xiàng)目管理工具。Maven能夠:
1)理解并管理整個(gè)軟件開發(fā)周期,重用標(biāo)準(zhǔn)的構(gòu)建過程,比如:編譯,測(cè)試,打包等。同時(shí)Maven還可以通過相應(yīng)的元數(shù)據(jù),重用構(gòu)建邏輯到一個(gè)項(xiàng)目。
2)Maven負(fù)責(zé)整個(gè)項(xiàng)目的構(gòu)建過程。開發(fā)人員只需要描述項(xiàng)目基本信息在一個(gè)配置文件中:pom.xml。也就是說,Maven的使用者只需要回答“What”而不是“How”。?
3. Maven并不只是一個(gè)構(gòu)建工具,她還可以提供:
1)聲明式依賴性管理
2)集中的組件庫管理
3)文檔的自動(dòng)生成
4)報(bào)告的自動(dòng)生成
4. Maven設(shè)計(jì)原則
?1)Convention Over Configuration (約定優(yōu)于配置)。在現(xiàn)實(shí)生活中,有很多常識(shí)性的東西,地球人都知道。比如說:如何過馬路(紅燈停綠燈行),如何開門,關(guān)門等。對(duì)于這些事情,人們已經(jīng)有了默認(rèn)的約定。
在軟件開發(fā)過程中,道理也是類似的,如果我們事先約定好所有項(xiàng)目的目錄結(jié)構(gòu),標(biāo)準(zhǔn)開發(fā)過程(編譯,測(cè)試,。。。),所有人都遵循這個(gè)約定。軟件項(xiàng)目的管理就會(huì)變得簡(jiǎn)單很多。在現(xiàn)在流行的很多框架中,都使用了這個(gè)概念,比如EJB3和 Ruby on Rails。在Maven中默認(rèn)的目錄結(jié)構(gòu)如下:
由上圖可以看出以下幾個(gè)標(biāo)準(zhǔn)的Maven目錄:
- src:源代碼目錄。所有的源代碼都被放在了這個(gè)目錄下。在這個(gè)目錄下又包括了:
?1) main:所有的源代碼放在這里。對(duì)于Java項(xiàng)目,還有一個(gè)下級(jí)子目錄:java. 對(duì)于Flex項(xiàng)目則是flex,。。。
?2) test:所有的單元測(cè)試類放在這里。
- target:所有編譯過的類文件以及生成的打包文件(.jar, .war, ...)放在這里。
2)Reuse Build Logic (重用構(gòu)建邏輯):Maven把構(gòu)建邏輯封裝到插件中來達(dá)到重用的目的。這樣在Maven就有用于編譯的插件,單元測(cè)試的插件,打包的插件,。。。Maven可以被理解成管理這些插件的框架。
3)Declarative Execution (聲明式執(zhí)行):Maven中所有的插件都是通過在POM中聲明來定義的。Maven會(huì)理解所有在POM中的聲明,并執(zhí)行相應(yīng)的插件。
5. 創(chuàng)建一個(gè)Maven項(xiàng)目(在linux中安裝過程類似)
1) 下載Maven:http://maven.apache.org/
2) 解壓縮下載的zip文件到本地目錄下,比如:D:\Maven
3) 添加D:\Maven\bin到環(huán)境變量PATH中
4) 在命令行下運(yùn)行:?
mvn?-version??或者 mvn -v
你應(yīng)該看到如下圖所示的Maven版本號(hào):
5) 運(yùn)行如下命令創(chuàng)建一個(gè)Maven項(xiàng)目:
mvn archetype:create -DgroupId=net.jianxi.tutorials-DartifactId=helloworld
-DpackageName=net.jianxi.tutorials
該項(xiàng)目的目錄結(jié)構(gòu)如下圖所示:
現(xiàn)在就可以運(yùn)行一些Maven命令了
編譯: mvn compile
單元測(cè)試: mvn test
構(gòu)建并打包: mvn package
清理: mvn clean
安裝 mvn clean install
2. pom.xml配置初步
1. 創(chuàng)建項(xiàng)目并更改項(xiàng)目基本配置信息
在命令行下運(yùn)行如下命令創(chuàng)建一個(gè)項(xiàng)目:
mvn archetype:create -DgroupId=net.jianxi.tutorials -DartifactId=numopers -DpackageName=net.jianxi.tutorials -Dversion=1.0
進(jìn)入到numopers目錄,打開pom.xml,該文件內(nèi)容如下:
<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>net.jianxi.tutorials</groupId>
<artifactId>numopers</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>numopers</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
其中:
- groupId: 通常為項(xiàng)目的頂級(jí)包名。
- artifactId: 通常為項(xiàng)目名
- version:項(xiàng)目的版本號(hào),在開發(fā)的不同階段,你需要更改這個(gè)版本號(hào)。
- packaging:項(xiàng)目發(fā)布時(shí)的打包類型。比如對(duì)于普通Java程序打包為jar文件;對(duì)于Java web項(xiàng)目則打包為war文件。
- name:通常也是項(xiàng)目名
- url:項(xiàng)目的主頁。
2. 添加源代碼
在你的項(xiàng)目的src\main\java\net\jianxi\tutorials目錄下,刪除原有的App.java, 添加一個(gè)新的Java源文件: NumOpers.java, 其源代碼如下:
1 package net.jianxi.tutorials; 2 3 public class NumOpers 4 { 5 public int add(int i, int j) { 6 return i + j; 7 } 8 9 public int minus(int i, int j) { 10 return i - j; 11 } 12 }之后可運(yùn)行如下命令進(jìn)行編譯:
mvn compile
你應(yīng)該可以看到如下結(jié)果(如果你是第一次用maven來編譯文件,maven會(huì)鏈接到http://repo.maven.apache.org/maven2上下載為解決依賴性所需的pom文件和相應(yīng)的jar包,在linux下的默認(rèn)存放目錄文~/.m2):
3. 添加JUnit 4.x單元測(cè)試類
在你的項(xiàng)目的src\test\java\net\jianxi\tutorials目錄下,刪除原有的AppTest.java, 添加一個(gè)新的Java源文件: NumOpersTest.java, 其源代碼如下:
1 package net.jianxi.tutorials; 2 import org.junit.* ; 3 import static org.junit.Assert.* ; 4 5 public class NumOpersTest { 6 NumOpers no = new NumOpers(); 7 @Test 8 public void testAdd() { 9 assertEquals(no.add(3,5), 8); 10 } 11 12 @Test 13 public void testMinus() { 14 assertEquals(no.minus(10,5), 5); 15 } 16 }4. 配置pom.xml限定JDK版本號(hào)為5, 并支持JUnit 4.7
修改后的pom.xml文件為:
代碼 <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>net.jianxi.tutorials</groupId>
<artifactId>numopers</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>numopers</name>
<url>http://bluesfeng.javaeye.com</url>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId><version>4.7</version><scope>test</scope>
</dependency>
</dependencies>
</project>
現(xiàn)在你可以運(yùn)行一下命令來自動(dòng)測(cè)試了:
mvn test
如果測(cè)試通過,你可以看到如下結(jié)果(同樣地,如果你是第一次進(jìn)行測(cè)試,maven仍然會(huì)下載頂級(jí)pom.xml中所需的依賴性pom文件和相應(yīng)jar包):
轉(zhuǎn)載自:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033781.html
轉(zhuǎn)載于:https://www.cnblogs.com/itgg168/archive/2012/11/27/2790406.html
總結(jié)
以上是生活随笔為你收集整理的Maven使用教程(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:生产计划问题
- 下一篇: Opera 扩展文章目录