1. 程式人生 > >Centos6.5 下 Maven 安裝

Centos6.5 下 Maven 安裝

一、Maven簡介

  • Maven 是基於專案物件模型(POM),可以通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具

  • Maven 除了以程式構建能力為特色之外,還提供高階專案管理工具。由於 Maven 的預設構建規則有較高的可重用性,所以常常用兩三行 Maven 構建指令碼就可以構建簡單的專案。由於 Maven 的面向專案的方法,許多 Apache Jakarta 專案發文時使用 Maven,而且公司專案採用 Maven 的比例在持續增長

  • Maven這個單詞來自於意第緒語,意為知識的積累,最早在Jakata Turbine專案中它開始被用來試圖簡化構建過程。當時有很多專案,它們的Ant build檔案僅有細微的差別,而JAR檔案都由CVS來維護。於是Maven創始者開始了Maven這個專案,該專案的清晰定義包括,一種很方便的釋出專案資訊的方式,以及一種在多個專案中共享JAR的方式。

二、常見 Bug

用maven做專案,最鬱悶的莫過於某些依賴庫下載不了。被牆了,你懂的。使用maven映象倉庫及其重要,特別是國內的映象,可以有效緩解被牆疼痛。

同時,會經常會遇到以下問題:

[ERROR] Failed to execute goal on project …: Could not resolve dependencies for project …: The following artifacts could not be resolved: com.smart:smart-framework:jar:1.0, …: Failure to find com.smart:smart-framework:jar:1.0 in

http://maven.oschina.net/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of osc has elapsed or updates are forced -> [Help 1]

目前 OSC Maven 已經將所有第三方 jar 包放到了獨立的倉庫中,該倉庫的地址如下:

為了防止與中央倉庫同步時導致衝突,目前 thirdparty 倉庫與 public 倉庫沒有任何交集了,也就是說它們是完全獨立的,public 不再包括 thirdparty。

三、安裝步驟

  • 解壓 Maven到 /home/hadoop/software 目錄下

cd /home/hadoop/software
tar -zxvf apache-maven-3.2.1-bin.tar.gz
  • 修改配置 Maven
export M2=/home/hadoop/software/apache-maven-3.2.1
export PATH=${PATH}:$M2/bin
  • 檢驗 Maven 是否安裝成功
mvn -version

顯示如下即安裝成功:

這裡寫圖片描述

注意事項:

1. 注意Maven版本檔案
Hadoop 2.2.0的原始碼與Maven 3.x存在相容性問題,所以會出現java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter

2. MAVEN國內映象配置
由於maven國外伺服器可能連不上,先給maven配置一下國內映象,在maven目錄下,conf/settings.xml,在裡新增,原本的不要動,(本人在原有的基礎上直接修改,也成功)

<mirror>
    <id>nexus-osc</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexusosc</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
<mirror>
    <id>osc_thirdparty</id>
    <mirrorOf>thirdparty</mirrorOf>
    <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>

同樣,在內新新增:

<profile>
    <id>jdk-1.4</id>
    <activation>
        <jdk>1.4</jdk>
    </activation>
    <repositories>
        <repository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</profile>

以上程式碼,本人均直接複製替換原有的程式碼,可以將原有程式碼備份!

3.複製配置

  • 將該配置檔案複製到使用者目錄,使得每次對maven建立時,都採用該配置
  • 檢視使用者目錄【/home/hadoop】是否存在【.m2】資料夾,如沒有,則建立
cd /home/hadoop/
mkdir .m2
  • 複製檔案
cp /home/hadoop/software/apache-maven-3.2.1/conf/settings.xml   ~/.m2/

四、Maven新增其他映象地址

如果上述的映象無法滿足您的需求,那麼以下這些映象地址,可以考慮以下,至少筆者使用上面的映象已經足夠了

1. 國外映象:biblio.org


<mirror>
  <id>ibiblio</id>  
  <mirrorOf>central</mirrorOf>  
  <name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>  
  <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>

2. 國外映象:jboss

<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>

3.國外映象:repo2

<mirror>
  <id>repo2</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://repo2.maven.org/maven2/</url>
</mirror>

4.國外映象: uk.maven.org

<mirror>
  <id>uk</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://uk.maven.org/maven2/</url>
</mirror>

5. 國內映象:oschina.net

<mirror>
  <id>nexus-osc</id>
  <mirrorOf>*</mirrorOf>
  <name>Nexus osc</name>
  <url>http://maven.oschina.net/content/groups/public/</url>
</mirror>

6. net.cn

<mirror>
    <id>net-cn</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://maven.net.cn/content/groups/public/</url>   
</mirror>
<mirror>
    <id>UK</id>
    <name>UK Central</name>
    <url>http://uk.maven.org/maven2</url>
    <mirrorOf>central</mirrorOf>
</mirror>

<mirror>
    <id>sonatype</id>
    <name>sonatype Central</name>
    <url>http://repository.sonatype.org/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

五、知識擴充套件