Maven3倉庫與配置

jopen 9年前發布 | 33K 次閱讀 Maven3 Maven 項目構建

mavne倉庫

maven的倉庫分為兩類:本地倉庫和遠程倉庫,當maven在按照坐標查找構建或插件時,會先在本地倉庫查找,能找到就會直接使用本地倉庫的構建或插件;當沒找到對應的構建或插件或者需要查看更新時,才會去遠程倉庫查找,找到后會下載到本地,沒找到會報錯。

maven的本地倉庫

maven的本地倉庫位置默認在用戶目錄下的.m2/repository,可以通過配置settings.xml中的

<settings>
    ...
    <localRepository></localRepository>
    ...
</settings>

配置本地倉庫到其他位置,需要注意的是,要使settings.xml中的配置生效,在IDE中必須指定settings.xml位置;若在命令行中使用,默認會使用maven_home目錄下config中的settings.xml,可以使用-s指定要使用的settings.xml文件的位置。

maven的遠程倉庫

maven的遠程倉庫又分為公開的倉庫(如默認的中央倉庫、java.net Maven庫、JBoss Maven庫等)和私服(一般為公司局域網中使用,節約流量,便于管理,加速構建,常見的可以使用nexus這個開源項目來快速搭建)

maven的遠程倉庫配置

maven的遠程倉庫配置可以在pom.xml中或settings.xml中完成,pom.xml文件用來設置當前項目的配置項,如果有配置其他模塊或其他項目會復用,可以在settings.xml中配置或者使用繼承來實現配置的復用;settings.xml適合用來配置一些所有maven項目都會公用的配置信息,比如:maven構建以及插件的下載地址、maven的鏡像、maven代理等

<repositories>
    <repository>
        <id>maven.oschia.net</id>
        <name>oschina maven repository</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
            <checksumPolicy>ignore</checksumPolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
            <checksumPolicy>ignore</checksumPolicy>
        </snapshots>
        <layout>default</layout>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>maven.oschina.net</id>
        <name>oschina maven repository</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
            <checksumPolicy>ignore</checksumPolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <layout>default</layout>
    </pluginRepository>
</pluginRepositories>

repositories元素下可以配置多個repository,每個repository表示一個遠程倉庫,repository下面的元素如下

  • id,每個repository需要一個唯一的id,如果id相同后面的配置會覆蓋前面的配置,如maven的超級pom.xml(解壓${M2_HOME}/lib/maven-model-builder-3.0.4.jar,在解壓出來的目錄的/org/apache/maven/model/pom-4.0.0.xml)中配置了maven的中央倉庫,id為central,我們可以通過配置相同id覆蓋中央倉庫配置;

  • name,用于描述這個倉庫

  • releases,enabled:true或false;updatePolicy:更新頻率never-從不,always-每次構建都檢查,daily-每天(默認),inerval:x-每隔x分鐘;checksumPolicy:用來配置文件校驗和策略,當勾踐被部署到遠程倉庫會同時生成一個校驗和文件,在下載構件時檢查校驗和,warn-校驗失敗輸出警告(默認),fail-校驗失敗構建失敗,ignore-忽略

  • snapshots 同上

  • layout,布局默認為default

pluginRepositories情況與上面基本一致。

部署倉庫配置

私服可以用于部署第三方構件,需要在pom.xml文件中如下配置:

<distributionManagement>
    <repository>
        <id>project-release</id>
        <name>release repository</name>
        <url></url>
    </repository>
    <snapshotRepository>
        <id>project-snapshot</id>
        <name>snapshot repository</name>
        <url></url>
    </snapshotRepository>
</distributionManagement>

repository用來配置release版本的部署倉庫,snapshotRepository用于配置snapshot版本的部署配置

倉庫認證

在從倉庫下載構建或者部署構件到倉庫時,可以開啟賬號密碼認證,只有擁有正確的賬號密碼的才可以使用,這是需要在settings.xml文件中配置認證信息,如下:

<settings>
......
    <servers>
        <server>
            <id>mapping repository id</id>
            <username></username>
            <password></password>
        </server>
    </servers>
......
</settings>

來自:http://my.oschina.net/u/1413049/blog/519543

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!