天天看點

搭建Maven私有倉庫并在項目中使用②

人最先衰老的從來不是容貌,而是那份不顧一切的闖勁.

前面①中已經介紹了搭建私服和建立倉庫,本文中介紹怎麼管理建構,idea開發工具釋出jar包到私服.

一:在maven管理器中建立人員以及賦予權限

 第一步:建立權限(Privileges)

搭建Maven私有倉庫并在項目中使用②

第二步:建立角色(Roles)

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

第三步:建立人員

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

填寫完資訊,點選儲存.

二:讓maven項目使用搭建的maven私服

maven下的setting.xml檔案和項目中的pom.xml檔案的關系:

    Ⅰ.settting.xml檔案就是本地,電腦上的全局變量;而pom.xml檔案就是局部變量。

    Ⅱ.項目建立的pom.xml檔案對于項目來說,優先級别最高。如果pom.xml檔案中沒有配置鏡像位址的話,隻能去按照全局變量中定義的位址去下載下傳.

    Ⅲ.那怎麼去找全局變量呢?IDE【編譯工具】中直接指定确定的setting.xml檔案,這樣在pom.xml檔案中沒有的情況下,IDE就按照設定的去找對應的setting.xml檔案。

注:有一點要注意的就是,maven如果是你自己下載下傳的,那裡面肯定會有一份setting.xml檔案。什麼都不配置的話,它全部都是按照預設值去幹的,例如本地倉庫它預設的就是放在使用者/.m2/檔案夾下的。

①在原始的setting檔案中加入

搭建Maven私有倉庫并在項目中使用②

拷貝的這個位址,就是下面即将在setting.xml檔案中添加時使用的。可以對應下面的setting.xml檔案中看。

搭建Maven私有倉庫并在項目中使用②
<!--id 自定義 username和password 為nexus中的人員賬号和密碼-->
<servers>
   <server>
      <id>nexus_dep</id>
      <username>xxxx</username>
      <password>xxxx</password>
   </server>
   <server>
      <id>nexus_admin</id>
      <username>xxxx</username>
      <password>xxxx</password>
   </server>
</servers>

<!--ID 為server中的相應ID,URL為nexus相應倉庫的URL pom.xml檔案中沒有指定鏡像位址,則項目使用此處配置的,如果pom.xml檔案中配置了,此處可以不需要配置-->
<mirrors>
	<mirror>
      <id>nexus_dep</id>
      <mirrorOf>*</mirrorOf>
      <url>http://ip+port/repository/maven-public/</url>
    </mirror>
</mirrors>
           

②修改項目中的pom.xml檔案

A:配置遠端倉庫位址

B.配置打包時釋出jar包到私有倉庫

<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">
    <!-- 倉庫服務鏡像 maven setting檔案中配置了,此處可以不用配置 ID和name自定義-->
    <repositories>
        <repository>
            <id>myMaven</id>
            <name>myMaven</name>
            <url>http://ip+port/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <!--釋出到私服相關配置 ID需要與setting檔案中的server ID對應-->
    <distributionManagement>
        <repository>
            <id>nexus_dep</id>
            <name>Releases</name>
            <url>http://ip+port/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus_dep</id>
            <name>Snapshot</name>
            <url>http://ip+port/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
</project>
           

<repositories>的配置,你可以在它下面添加多個<repository> ,每個<repository>都有它唯一的ID,一個描述性的name,以及最重要的,遠端倉庫的url。此外,

<releases><enabled>true</enabled></releases>告訴Maven可以從這個倉庫下載下傳releases版本的構件

<snapshots><enabled>false</enabled></snapshots>告訴Maven不要從這個倉庫下載下傳snapshot版本的構件。

禁止從公共倉庫下載下傳snapshot構件是推薦的做法,因為這些構件不穩定,且不受你控制,應該避免使用。如果你想使用區域網路内組織内部的倉庫,可以激活snapshot的支援。

在pom檔案中加入distributionManagement節點,注意:pom.xml中repository裡的id需要和maven中setting.xml裡的server id名稱保持一緻.

③釋出jar包到私服

搭建Maven私有倉庫并在項目中使用②

Q&A:

1.重複釋出出現 Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.

原因:經排查發現是因為重複釋出導緻的。maven私有倉庫預設不允許重複部署。

浏覽器登入nexus管理界面–>設定圖示–>Repository–>Repositories–>maven-releases–>Hosted–>請選擇‘Allow redeploy’政策,預設是disable政策,然後儲存。 請注意,不同版本的nexus,進入的路徑可能有細微差別。

搭建Maven私有倉庫并在項目中使用②
  • 如果出現400,需要注意項目下的pom.xml檔案和maven使用的setting.xml檔案的配置是否一緻。
  • 如果出現401,需要檢查maven使用的setting.xml中的帳号和密碼是否正确,相應的repository是否為“Allow Redeploy”。

2,釋出無權限 Could not transfer artifact from/to XXXXXX  Not authorized

原因,如果是使用的建立人員,則人員沒有配置相應權限.

搭建Maven私有倉庫并在項目中使用②

3.maven下載下傳jar包,檔案以.lastUpdated結尾

原因:倉庫裡面沒有相應的jar包

解決:

         1.先删除本地的檔案(通過cmd批量删除本地倉庫中以.lastUpdated結尾的檔案 del *.lastUpdated /s)

         2.上傳jar包到私服

         3.在項目中重新下載下傳jar包

三:查詢jar包

搭建Maven私有倉庫并在項目中使用②

點開檢視:

搭建Maven私有倉庫并在項目中使用②

點進入jar包的這個概要資訊

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

四:上傳jar包

1.使用指令上傳第三方jar到nexus

上傳一個處理word的jar包到nexus上,jar包為jacob,資源庫為hosted

搭建Maven私有倉庫并在項目中使用②

我們先在nexus上搜尋一下:下面是搜不出來的

搭建Maven私有倉庫并在項目中使用②

把hosted資源庫配置到maven的settting.xml檔案中

搭建Maven私有倉庫并在項目中使用②

     <!--id自定義,但是在使用指令上傳的時候會用到-->

           <server> 

                 <id>myself_hosted</id> 

                <username>admin</username> 

                <password>admin123</password> 

           </server>

使用以下指令

導入第三方jar的指令

       mvn deploy:deploy-file -DgroupId=sxd.jar -DartifactId=jacob -Dversion=1.18 -Dpackaging=jar -Dfile=G:\jar\jacob-1.18.jar -Durl=http://localhost:8081/repository/myself_hosted/ -DrepositoryId=myself_hosted

導入第三方pom檔案的指令

       mvn deploy:install-file -Dfile=D:\document\IdeaProjects\myTestDocument\jar\tx-lcn-4.2.0-SNAPSHOT.pom -DgroupId=com.codingapi -DartifactId=tx-lcn -Dversion=4.2.0-SNAPSHOT -Dpackaging=pom

指令解釋:

-DgroupId=sxd.jar                    自定義

-DartifactId=jacob                    自定義

-Dversion=1.18                        自定義  三個自定義,構成pom.xml檔案中的坐标

-Dpackaging=jar                    上傳的類型是jar類型

-Dfile=G:\jar\jacob-1.18.jar                  jar的本地磁盤位置

-Durl=http://localhost:8081/repository/myself_hosted/    hosted資源庫的位址,下圖中

-DrepositoryId=myself_hosted              setting.xml檔案中配置的ID

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

上傳完成,再nexus中檢視一下:

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

上傳成功!!!

2.使用視窗Upload           

搭建Maven私有倉庫并在項目中使用②
搭建Maven私有倉庫并在項目中使用②

Extension:類型(jar/pom)

注:jar檔案和pom檔案都要上傳,否則下載下傳代碼的時候沒有相應的pom檔案   

至此maven項目使用maven倉庫私服相關配置結束,感謝大家閱讀!