轉載自 http://blog.csdn.net/ljfbest/article/details/8045988
安裝好maven后,想要使用他的一些命令,需要配置環境變量PATH:D:\study\apache-maven-3.0.4\bin
運行mvn命令實際上是執行了Java命令,既然是運行Java,那么運行Java命令可用的參數當然也應該在運行mvn命令時可用。這個時候,MAVEN_OPTS環境變量就 能派上用場。 設置MAVEN_OPTS的值為:-Xms128m -Xmx512m,因為Java默認的最大可用內存往往不能夠滿足Maven運行的需要,比如在項目較大時,使用Maven生成項目站點需要占用大量的內 存,如果沒有該配置,我們很容易得到java.lang.OutOfMemeoryError。
settings.xml :Maven用戶可 以選擇配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml。前者是全局范圍的,整台機器上的所有用戶都 會直接受到該配置的影響,而后者是用戶范圍的,只有當前用戶才會受到該配置的影響。 推薦使用用戶范圍的settings.xml,主要原因是為了避免無 意識地影響到系統中的其他用戶。如果有切實的需求,需要統一系統中所有用戶的settings.xml配置,當然應該使用全局范圍的 settings.xml。
修改中央倉庫位置:修改settings.xml 中 <localRepository>D:/java/repos</localRepository> 即以后下載的東西就在D:/java/repos 拷貝到任一位置當做用戶settings.xml
中央倉庫無法訪問解決辦法,搜了好長時間原來是聯通網的原因,無語……
第一種:http://blog.csdn.net/shycx/article/details/7726600
運行如下命令嘗試快速構建一個maven項目:
mvn archetype:generate
結果就有問題:
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.4.1: Plugin org.apache.maven.plugins:maven-clean-plugin:2.4.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.3.1/maven-install-plugin-2.3.1.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-install-plugin:2.3.1: Plugin org.apache.maven.plugins:maven-install-plugin:2.3.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-install-plugin:jar:2.3.1
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.5/maven-deploy-plugin-2.5.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-deploy-plugin:2.5: Plugin org.apache.maven.plugins:maven-deploy-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-deploy-plugin:jar:2.5
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-site-plugin/2.0.1/maven-site-plugin-2.0.1.pom
------
這種hello world級別的操作出錯,就懷疑是網絡問題,於是讓其他同事幫我嘗試訪問http://repo1.maven.org/maven2/org /apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin- 2.4.1.pom地址,發現完全沒問題,感覺異常郁悶。后來網上查了一下,發現是因為聯通網絡下,無法訪問maven.org網站。解決此問題理論上有 兩個辦法,一個是在maven的配置文件中設置代理,另一個是在maven的配置文件中設置聯通網絡下,能夠訪問的中央倉庫的mirrors。因為也不好 找穩定的代理,我就在網上搜索了兩個可用的mirror站點,配置方式如下:
1、打開maven配置文件(maven安裝目錄下的conf目錄下的settings.xml文件)
2、搜索mirrors關鍵字,如果注釋說明的下方沒有 <mirrors>節點,則建立mirrors節點,帶mirrors節點的所有配置如下(復制下面的內容,粘貼到配置文件中即可):
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>ibiblio.org</id>
<name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, North Carolina -->
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
</mirrors>
第二種:http://www.oschina.net/question/96320_60348
修改host文件夾完美解決 :加入 72.21.81.253 repo1.maven.org
第三種:設置HTTP代理
有時候你所在的公司由於安全因素考慮,要求你使用通過安全認證的代理訪問因特網或無法訪問。這種情況下,就需要為Maven配置HTTP代理,才能讓它正 常訪問外部倉庫,以下載所需要的資源。 首先確認自己無法直接訪問公共的Maven中央倉庫,直接運行命令ping repo1.maven.org可以檢查網絡。如果真的需要代理,先檢查一下代理服務器是否暢通,比如現在有一個IP 地址為218.14.227.197,端口為3128的代理服務,我們可以運行telnet 218.14.227.197 3128來檢測該地址的該端口是否暢通。如果得到出錯信息,需要先獲取正確的代理服務信息;如果telnet 連接正確,則輸入ctrl+],然后q,回車,退出即可。 檢查完畢之后,編輯~/.m2/settings.xml文件(如果沒有該文件,則復 制$M2_HOME/conf/settings.xml)。添加代理配置如下:
<settings>
-----------
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>218.14.227.197</host>
<port>3128</port>
<!--
<username>***</username>
<password>***</password>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
-->
</proxy>
</proxies>
-----------------
</settings>
這段配置十分簡單,proxies下可以有多個proxy元素,如果你聲明了多個proxy元素,則默認情況下第一個被激活的proxy會生效。這里聲明 了一個id為my-proxy的代理,active的值為true 表示激活該代理,protocol表示使用的代理協議,這里是http。當然,最重要的是指定正確的主機名(host 元素)和端口(port 元素)。上述XML配置中我注釋掉了username、password、nonProxyHost幾個元素,當你的代理服務需要認證時,就需要配置 username和password。nonProxyHost元素用來指定哪些主機名不需要代理,可以使用 | 符號來分隔多個主機名。此外,該配置也支持通配符,如*.google.com表示所有以google.com結尾的域名訪問都不要通過代理
pom.xml:
就像Make的Makefile,Ant的build.xml一樣,Maven項目的核心是pom.xml。POM(Project Object Model,項目對象模型)定義了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。現在我們先為Hello World項目編寫一個最簡單的pom.xml。
- <?xml version="1.0" encoding="UTF-8"?>
- <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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.juvenxu.mvnbook</groupId>
- <artifactId>hello-world</artifactId>
- <version>1.0-SNAPSHOT</version>
- <name>Maven Hello World Project</name>
- </project>
代碼的第一行是XML頭,指定了該xml文檔的版本和編碼方式。緊接着是project元素,project是所有pom.xml的根元素,根元素 下的第一個子元素modelVersion指定了當前POM模型的版本,對於Maven2及Maven3來說,它只能是4.0.0。 這段代碼中最重要的 是groupId,artifactId和version三行。這三個元素定義了一個項目基本的坐標,在Maven的世界,任何的jar、pom或者 war都是以基於這些基本的坐標進行區分的。 groupId定義了項目屬於哪個組,這個組往往和項目所在的組織或公 司存在關聯,譬如你在googlecode上建立了一個名為myapp的項目,那么groupId就應該是com.googlecode.myapp,如 果你的公司是mycom,有一個項目為myapp,那么groupId就應該是com.mycom.myapp。本書中所有的代碼都基於groupId com.juvenxu.mvnbook。 artifactId定義了當前Maven項目在組中唯一的ID,我們 為這個Hello World項目定義artifactId為hello-world,而在前面的groupId為com.googlecode.myapp的例子中,你可 能會為不同的子項目(模塊)分配artifactId,如:myapp-util、myapp-domain、myapp-web等等。version指 定了Hello World項目當前的版本——1.0-SNAPSHOT。SNAPSHOT意為快照,說明該項目還處於開發中,是不穩定的版本。隨着項目的發 展,version 會不斷更新,如升級為1.0、1.1-SNAPSHOT、
1.1、2.0等等。
maven項目骨架archetype:
項目中有一些Maven的約定:在項目的根目錄中放置pom.xml,在src/main/java目錄中放置項目的主代碼,src/main/java/resources存放源代碼資源文件,在src/test/java中放置項目的測試代碼
簡單的運行: mvn archetype:generate 就可以構造出這個骨架 Maven會提示我們輸入要創建項目的groupId、artifactId、 version、以及包名package
常用命令:編譯源代碼: mvn compile 編譯測試代碼:mvn test-compile 運行測試:mvn test 產生site:mvn site 打包:mvn package 在本地Repository中安裝jar:mvn install 清除產生的項目:mvn clean