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

搭建私有服務器

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

然而,咱們的本地倉庫經常沒有想要的jar包的,而常常去中心倉庫下載這就很是浪費時間和資源了…所以咱們通常都有一個私有倉庫…瀏覽器

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

這裏寫圖片描述

準備步驟

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

Nexus環境搭建服務器

第一步:下載nexus-webapp-1.9.2.4.war包,而後拷貝到tomcat下的webapps目錄中
第二步:啓動tomcat 默認登陸帳戶密碼爲: admin admin123
第三步:訪問http://localhost:8080/項目名稱/
tomcat會自動解析war包,而後就自動下載插件… oracle


訪問該項目,進到首頁app

這裏寫圖片描述

登錄… 框架

這裏寫圖片描述

倉庫介紹

這裏寫圖片描述

  • 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老版本

每一個倉庫的做用:webapp

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

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

倉庫組的配置順序:

這裏寫圖片描述

這裏寫圖片描述

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

再次查看倉庫組

這裏寫圖片描述

相關文章
相關標籤/搜索