搭建私有服務器
前面已經說過了,我們使用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>
再次查看倉庫組