maven私有庫搭建

為什么要搭建maven私有庫?

有位博主在2008年時這樣寫道:

如果沒有私服,我們所需的所有構件都需要通過maven的中央倉庫和第三方的Maven倉庫下載到本地,而一個團隊中的所有人都重復的從maven倉庫下載構件無疑加大了倉庫的負載和浪費了外網帶寬,如果網速慢的話,還會影響項目的進程。很多情況下項目的開發都是在內網進行的,連接不到maven倉庫怎么辦呢?開發的公共構件怎么讓其它項目使用?這個時候我們不得不為自己的團隊搭建屬于自己的maven私服,這樣既節省了網絡帶寬也會加速項目搭建的進程,當然前提條件就是你的私服中擁有項目所需的所有構件。
總之,在本地構建私服的好處有:
1)加速構建;
2)節省帶寬;
3)節省中央maven倉庫的帶寬;
4)穩定(應付一旦中央服務器出問題的情況);
5)控制和審計;
6)能夠部署第三方構件;
7)可以建立本地內部倉庫;
8)可以建立公共倉庫

但對于現在(2018年)的帶寬和網絡情況來說,上面的好處已經不那么明顯了。
結合本人maven使用經驗來回答:
在多人協同開發時,開發人員開發的項目jar包如果還是在開發人員本地電腦的maven庫上是不合理的,需要一個可以大家都能訪問的maven庫。
這個庫是maven公共庫嗎?如第三方的阿里巴巴maven庫?maven中央庫?
顯然是不可以的,只要是商業項目,誰愿意把自己的代碼maven install 到別人的maven庫里,這樣別人就知道你的代碼了,相當于開源一樣了,除非做開源項目。
還有項目有時候會加入購買的第三方商業工具,這些工具的jar包也要放到一個maven倉庫里。

為什么要用Sonatype Nexus做maven的私有倉庫?

原因很簡單,Sonatype Nexus就是倉庫管理工具,而且穩定好用。

Sonatype Nexus2.x支持的倉庫:



Sonatype Nexus3.x支持的倉庫:



Sonatype Nexus官網:http://www.sonatype.org/nexus/
本文以2.x版本,因為maven倉庫的支持夠了。
3.x的版本更新太大了,安裝文件目錄結構都變了。

搭建過程

1、下載Nexus 2.x版本
2、解壓
# mkdir nexus ?
# tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C nexus ?
# cd nexus ?
# ls ?
nexus-2.11.2-03 ?sonatype-work ?
(一個nexus 服務,一個私有庫目錄) ?

3、編輯Nexus 的nexus.properties 文件,配置端口和work 目錄信息
# cd nexus-2.11.2-03 ?
# ls ?
bin ?conf ?lib ?LICENSE.txt ?logs ?nexus ?NOTICE.txt ?tmp ?
查看lib下的jar包,發現是基于jetty 運行 ?
(保留默認,不用改,除了端口8081看看是否沖突) ??
# cd conf ?
# vi nexus.properties ?
# Jetty section ?
application-port=8081 ?
application-host=0.0.0.0 ?
nexus-webapp=${bundleBasedir}/nexus ?
nexus-webapp-context-path=/nexus ?
??
# Nexus section ?
nexus-work=${bundleBasedir}/../sonatype-work/nexus ?
runtime=${bundleBasedir}/nexus/WEB-INF ?
??
??
4、編輯nexus 腳本, 配置RUN_AS_USER 參數 ?
# vi /root/nexus/nexus-2.11.2-03/bin/nexus ?
#RUN_AS_USER= ?
改為: ?
RUN_AS_USER=root ?
??
5、防火墻中打開8081 端口 ?
# vi /etc/sysconfig/iptables ?
添加: ?
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT ?
保存后重啟防火墻 ?
# service iptables restart ?
??
6、啟動nexus ?
# /root/nexus/nexus-2.11.2-03/bin/nexus start ?
**************************************** ?
WARNING - NOT RECOMMENDED TO RUN AS ROOT ?
**************************************** ?
Starting Nexus OSS... ?
Started Nexus OSS. ?
??
?
7、配置開機啟動
vi /etc/rc.local
增加下面行
/root/nexus/nexus-2.11.2-03/bin/nexus start ?
?
8、瀏覽器中打開:http://192.168.78.132:8081/nexus/ ?
9、登錄,默認用戶名admin,默認密碼admin123


10、Nexus 配置 (登錄后) ?
1、菜單Administration/Server 配置郵箱服務地址
該郵箱發送通知消息用


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?給用戶配置郵箱地址,方便忘記密碼時找回,和接受通知
?

倉庫類型



group ?倉庫組:Nexus 通過倉庫組的概念統一管理多個倉庫,
這樣我們在項目中直接請求倉庫組即可請求到倉庫組管理的多個倉庫。

hosted 宿主倉庫:主要用于發布內部項目構件或第三方的項目構件(如購買商業的構件)?
以及無法從公共倉庫獲取的構件(如 ?oracle ?的 ?JDBC ?驅動) ?

proxy 代理倉庫:代理公共的遠程倉庫

virtual 虛擬倉庫:用于適配 Maven 1
?
一般用到的倉庫種類是hosted、proxy ?
??
Hosted 倉庫常用類型說明: ?
releases ?內部的模塊中release 模塊的發布倉庫,發行版,穩定版,可用于生產 ?
snapshots 內部的模塊中SNAPSHOT 模塊的倉庫 ,內測版,開發版
3rd party 第三方依賴的倉庫,這個數據通常是由內部人員自行下載之后發布上去 ?
??

Maven 依賴包下載流程


如果構建的Maven 項目本地倉庫沒有對應的依賴包,那么就會去Nexus 私服去下載, ?
如果Nexus私服也沒有此依賴包,就回去遠程中央倉庫下載依賴,這些中央倉庫就是proxy。 ?
Nexus 私服下載成功后再下載至本地Maven 庫供項目引用。 ?


設置proxy 代理倉庫準許遠程下載

設置Apache Snapshots/Central/Codehaus Snapshots等proxy代理倉庫允許遠程訪問





本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql查詢_MYSQL查詢

-- 單表查詢SELECT sc.*FROM scSELECT * FROM course-- 分頁 LIMIT 從0開始檢索SELECT * FROM course LIMIT 0,3SELECT * FROM course limit 3,3SELECT * FROM course LIMIT 6,1-- 多表連接查詢-- 1.等值與非等值連接查詢SELECT * FROM student;SELECT * FROM course;SELECT *…

微軟封閉服務器切換,執行服務器切換:Exchange 2013 幫助 | Microsoft Docs

執行服務器切換2021/6/1本文內容適用于:Exchange Server 2013 SP1服務器切換是一個任務,執行該任務以將當前郵箱服務器的所有活動郵箱數據庫副本移動到數據庫可用性組 (中的一個或多個其他郵箱) 。 此任務作為為當前郵箱服務器的計劃中斷做準備的一部分執…

eclipse maven訪問maven私有庫

1、Windows本地maven下載 https://maven.apache.org/download.cgi 2、maven setting 文件配置 進入maven 目錄下 conf。apache-maven-3.2.3\conf 新建.xml 文件&#xff0c;內容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><set…

入門系列之在Ubuntu 16.04使用Buildbot建立持續集成系統

歡迎大家前往騰訊云社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 本文由angel_郁發表于云社區專欄 介紹 Buildbot是一個基于Python的持續集成系統&#xff0c;用于自動化軟件構建&#xff0c;測試和發布過程。 在本教程中&#xff0c;我們將演示如何設置持續集成系統以自動…

fedora mysql 初始化_Linux(fedora)下啟動MySQL,結果顯示:env: /etc/init.d/mysql:權限不夠。 我已經將權限切換到su了...

展開全部Linu下啟動MySQL結果顯示&#xff1a;env: /etc/init.d/mysql: 是腳e69da5e887aa62616964757a686964616f31333365646235本執行的問題解決辦法&#xff1a;依次執行下面的命令(執行失敗的話&#xff0c;檢查路徑是否正確)&#xff1a;cp /etc/init.d/mysql /etc/init.d/…

3.Android的新虛擬ART與原虛擬機DVM的區別

Android在4.2之前的虛擬機叫做 DVM 在4.2的時候多了一個虛擬機選擇&#xff0c;這是新的虛擬機 ART。Android Runingtime 那時ART還不夠成熟&#xff0c;需要測試&#xff0c;所以默認虛擬機是DVM。國內的ROM廠商直接把ART給割了。 Android5.0起&#xff0c;默認使用ART虛擬…

mysql binlog 統計_對MySQL binlog日志解析,統計每張表的DML次數

想要獲取每天數據庫每張表的DML的次數&#xff0c;統計熱度表&#xff0c;可以使用該腳本# coding:utf-8# 解析binlog&#xff0c;統計熱度表&#xff0c;表的DML個數import sysimport os# mysqlbinlog解析binlog日志def binlog_output():binlog_file sys.argv[1]file_num bi…

strapi 開源api 內容管理平臺試用

strapi 是一個開源的api && 內容管理平臺&#xff0c;功能操作起來還是比較方便簡單的。 安裝 使用docker && docker-compose 代碼clonegit clone https://github.com/strapi/strapi-docker && cd strapi-docker 啟動 docker-compose up -d 訪問 首次初…

1.android體系結構介紹

一、Android的介紹 android介紹見百度百科&#xff1a;Android的介紹&#xff0c;度娘把Android介紹的這么清楚&#xff0c;如果谷歌是Android的爹&#xff0c;那度娘就是娘了。 二、Android的架構圖 android系統主要分四層&#xff1a; 從上致下&#xff1a; 1、應用層 2、…

mysql seconds_behind_master_MySQL中的seconds_behind_master的理解

通過show slave status查看到的Seconds_Behind_Master&#xff0c;從字面上來看&#xff0c;他是slave落后master的秒數&#xff0c;一般情況下&#xff0c;也確實這樣&#xff0c;我們可以通過Seconds_Behind_Master數字查看slave是否落后于master&#xff0c;但是在一些環境中…

2.JVM和DVM之間的區別

1、JVM .java----->.class----->.jar 運行在內存的 棧 棧虛擬機 2、DVM .java----->.class------>.dex-----(加上其它資源文件)---->apk 運行在CPU的 寄存器 寄存器虛擬機 ---------------------------------------------------------- 3、DVM與JVM的區…

Node.js模塊以及模塊加載機制

2019獨角獸企業重金招聘Python工程師標準>>> Node.js中的模塊 在Node.js中&#xff0c;以模塊為單位劃分功能&#xff0c;通過一個完整的模塊加載機制使得開發人員可以將應用程序劃分為多個不同的部分。模塊的使用可以提高代碼重用率&#xff0c;提高應用程序的開發…

wordpress支持MySQL5.5_wordpress數據庫版本為5.5以上導出不能在5.5以下的版本導入的問題解決...

自從wordpress4.2版本出現以后&#xff0c;已經可以支持utf8mb4數據編碼&#xff0c;那么如果您的php空間的數據庫版本是mysql5.1的&#xff0c;那么很多站長朋友從mysql5.5導出來再導入到5.1的數據中的時候&#xff0c;那么問題來了&#xff0c;就會報錯Unknown collation ‘u…

i++與++i的區別

代碼&#xff1a; int i1; int ai;//先賦值&#xff0c;然后再自增&#xff0c;它等價于 a i ; i i 1System.out.println("a"a);System.out.println("i"i);System.out.println("---------------");int j1; int bj;//先自增&#xff0c;后賦值…

獲取數據庫名稱dbName

2019獨角獸企業重金招聘Python工程師標準>>> Autowired DataSource ds; connection ds.getConnection(); tring dbName connection.getCatalog(); connection.close(); 轉載于:https://my.oschina.net/u/2351011/blog/1925838

mysql 5.7 密碼過期_mysql5.7 密碼過期了怎么辦

mysql5.7 密碼過期了怎么辦發布時間&#xff1a;2020-05-08 14:11:09來源&#xff1a;億速云閱讀&#xff1a;148作者&#xff1a;三月下文主要給大家帶來mysql5.7 密碼過期了怎么辦&#xff0c;希望這些文字能夠帶給大家實際用處&#xff0c;這也是我編輯mysql5.7 密碼過期了怎…

我的開源項目

Android App 循環訪問網站app app介紹&#xff1a;http://blog.csdn.net/zengmingen/article/details/78016167 開源地址&#xff1a;https://gitee.com/zengmg/VistWeb

初始化bean(二)—— 緩存部分

上一篇博客&#xff0c;講了下spring如何初始化bean的 當然&#xff0c;當時只討論了很簡單的一種情況&#xff1a;初次加載bean時候&#xff0c;并且只考慮了單例。 這篇博客會試著理清楚spring在加載bean的時候的一部分緩存。關于解決循環引用所使用的緩存&#xff0c;可以看…

chkconfig: 2345 20 80

#chkconfig: 2345 20 80 2345表示系統運行級別是2&#xff0c;3&#xff0c;4或者5時都啟動此服務&#xff0c;20&#xff0c;是啟動的優先級&#xff0c;80是關閉的優先級&#xff0c;如果啟動優先級配置的數太小時如0時&#xff0c;則有可能啟動不成功&#xff0c;因為此時可…

android 按鍵上浮動畫_android – 浮動動作按鈕動畫

從Zielony的回答中,我確切地說到了我想要的地方.下面是正確應用效果的代碼.scale_fab_in.xmlandroid:duration"500"android:fromXScale"0"android:fromYScale"0"android:pivotX"50%"android:pivotY"50%"android:toXScale&qu…