maven 配置


轉載自 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。 

[html] view plain copy print ?
 
  1. <?xml version="1.0" encoding="UTF-8"?>      
  2.   <project xmlns="http://maven.apache.org/POM/4.0.0"     
  3.           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">      
  4.       
  5.     <modelVersion>4.0.0</modelVersion>      
  6.     <groupId>com.juvenxu.mvnbook</groupId>      
  7.     <artifactId>hello-world</artifactId>      
  8.     <version>1.0-SNAPSHOT</version>      
  9.     <name>Maven Hello World Project</name>      
  10.  </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  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM