Maven第四篇【私有倉庫、上傳jar包、引用私服jar包、上傳本地項目到私服】

搭建私有服務器

前面已經說過了,我們使用Maven的使用,如果需要導入相對應的jar包,Maven首先會在我們的本地倉庫中尋找—>私有倉庫—>中心倉庫…

然而,我們的本地倉庫常常沒有想要的jar包的,而經常去中心倉庫下載這就非常浪費時間和資源了…因此我們一般都有一個私有倉庫…

另外有些公司都不提供外網給項目組人員,因此就不能使用maven訪問遠程的倉庫地址,所以很有必要在局域網裏找一臺有外網權限的機器,搭建nexus私服,然後開發人員連到這臺私服上,這樣的話就可以通過這臺搭建了nexus私服的電腦訪問maven的遠程倉庫

這裏寫圖片描述

準備步驟

我們使用的是nexus框架來搭建私服,它屬於sonatype 機構的開源框架,用該框架架設maven 私有服務器

Nexus環境搭建

  • 第一步:下載nexus-webapp-1.9.2.4.war包,然後拷貝到tomcat下的webapps目錄中
  • 第二步:啓動tomcat 默認登錄賬戶密碼爲: admin admin123
  • 第三步:訪問http://localhost:8080/項目名稱/

tomcat會自動解析war包,然後就自動下載插件…
這裏寫圖片描述

訪問該項目,進到首頁

這裏寫圖片描述

登陸…
這裏寫圖片描述

倉庫介紹

這裏寫圖片描述

  • proxy:是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫下載,然後返回給用戶,相當於起到一箇中轉的作用
  • Hosted:是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted裏。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted裏
  • Group:是倉庫組,在maven裏沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要在pom中配置多個地址,只要統一配置group的地址就可以了右邊那個Repository Path可以點擊進去,看到倉庫中artifact列表。不過要注意瀏覽器緩存。我今天就發現,明明構件已經更新了,在瀏覽器裏卻看不到,還以爲是BUG,其實是被瀏覽器緩存了
  • virtual:也是中央倉庫鏡像,支持M1老版本

每個倉庫的作用:

  • 3rd party: 無法從公共倉庫獲得的第三方發佈版本的構件倉庫
  • Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫
  • Central: 用來代理maven中央倉庫中發佈版本構件的倉庫
  • Central M1 shadow: 用於提供中央倉庫中M1格式的發佈版本的構件鏡像倉庫
  • Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫
  • Releases: 用來部署管理內部的發佈版本構件的宿主類型倉庫
  • Snapshots:用來部署管理內部的快照版本構件的宿主類型倉庫

倉庫組是一個虛擬的概念,就是通過對實體倉庫(proxy、hosted)進行聚合, 對外暴露一個統一的地址這裏要注意的是,放到左邊的倉庫,纔是會被聚合的倉庫

倉庫組的配置順序:

這裏寫圖片描述

這裏寫圖片描述

上傳jar包到私服

直接通過網站上傳,把桌面上的pig-0.12.1.jar上傳到私有服務器中

這裏寫圖片描述

再次查看的時候,已經上傳上去了

這裏寫圖片描述

從私服依賴jar包

在pom.xml文件配置私服的路徑、組id、版本等等



    <!-- 假如沒有私服 ,則 本地倉庫找不到,則訪問中心倉庫
     假如有私服 :訪問順序
       首先訪問本地倉庫
   本地倉庫沒有,則訪問私服倉庫
   私服倉庫也沒有,則訪問中心倉庫
 -->
    <!-- 加載的是 第三方項目使用的jar包 -->
    <repositories>
        <repository>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <id>public</id>
            <name>public</name>
            <url>http://localhost:8080/nexus-2.6.2/content/groups/public/</url>
        </repository>
    </repositories>

    <!-- 加載的是maven生命週期插件的jar包 -->
    <pluginRepositories>
    <pluginRepository>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <id>public</id>
        <name>public</name>
        <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
    </pluginRepository>
    </pluginRepositories>

這裏寫圖片描述

在本地倉庫中也把私服的jar包下載下來了

這裏寫圖片描述

把本地項目發佈到私服

server的配置可以在Maven的settings.xml中寫上


  <!-- 分銷管理 ,把jar包發佈到私服中 -->
 <!--   配置服務器-->
     <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>

值得注意的是:你得留意你用的是哪個Maven,是你自己下載的Maven還是使用Idea集成的Maven,如果沒有配置的話,那麼就會出現401錯誤



  <distributionManagement>
  <!-- 發佈到 快照版本的倉庫,即 測試版本倉庫 -->
  <snapshotRepository>
  <id>snapshots</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
  </snapshotRepository>
  <!-- 發佈到 發行版本的倉庫中,也可以發佈到3rd party 倉庫 -->
  <repository>
    <id>releases</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
  </repository>

再次查看倉庫組

這裏寫圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章