Maven and Nexus2

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

Maven and Nexus2

Maven是什么?

  • 構建工具: 通過簡單的命令,能夠完成清理、編譯、測試、打包、部署等一系列過程。同時,不得不提的是,Maven是跨平臺的,無論是在Windows、還是在Linux或Mac上,都可以使用同樣的命令。

  • 依賴管理工具:

    項目依賴的第三方的開源類庫,都可以通過依賴的方式引入到項目中來。代替了原來需要首先下載第三方jar,再加入到項目中的方式。從而更好的解決了合作開發中依賴增多、版本不一致、版本沖突、依賴臃腫等問題。

  • 項目信息管理工具: 能夠管理項目描述、開發者列表、版本控制系統地址、許可證等一些比較零散的項目信息。除了直接的項目信息,通過Maven自動生成的站點,以及一些已有的插件,還能夠輕松獲得項目文檔、測試報告、靜態分析報告、源碼版本、日志報告等非常具有價值的項目信息。

Maven V·S Nexus

這個問題從Maven的第二個用處說起,依賴管理,通過在Pom中指定坐標的形式將jar引入到項目中。那這個過程,要經歷怎樣一個流程呢?從哪里尋找jar?下載的jar放到哪里?

將這個問題順下來,就知道nexus和maven的關系了。

從哪里找到jar?項目用到的jar又存放在哪里?這引出了倉庫的概念,maven通過倉庫來統一管理各種構件。Maven的倉庫分為本地倉庫和遠程倉庫。

20180928153813408874285.png

當Maven根據坐標尋找構件時,它首先會查看本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要查看是否有更新的構件版本,Maven會去遠程倉庫查找,發現需要的構件之后,下載到本地倉庫再使用。

20180928153813411863911.png

到了這里,問題的答案也就出來了。

首先,Nexus是一種遠程倉庫,根據上段的介紹,我們已經知道遠程倉庫的作用。在遠程倉庫中,默認的是中央倉庫,中央倉庫是Maven核心自帶的遠程倉庫。那就使用中央倉庫不就得了嗎,為什么我們要安裝Nexus呢?

我們從項目實際開發來看:

  1. 如果沒有私服,我們所需的所有構件都需要通過maven的中央倉庫和第三方的Maven倉庫下載到本地,而一個團隊中的所有人都重復的從maven倉庫下載構件無疑加大了倉庫的負載和浪費了外網帶寬,如果網速慢的話,還會影響項目的進程。
  2. 很多情況下項目的開發都是在內網進行的,連接不到maven倉庫怎么辦呢?開發的公共構件怎么讓其它項目使用?這個時候我們不得不為自己的團隊搭建屬于自己的maven私服,這樣既節省了網絡帶寬也會加速項目搭建的進程,當然前提條件就是你的私服中擁有項目所需的所有構件。
  3. 為了節省帶寬和時間,在局域網內架設一個私有的倉庫服務器,用其代理所有外部的遠程倉庫。當本地Maven項目需要下載構件時,先去私服請求,如果私服沒有,則再去遠程倉庫請求,從遠程倉庫下載構件后,把構件緩存在私服上。這樣,及時暫時沒有Internet鏈接,由于私服已經緩存了大量構件,整個項目還是可以正常使用的。同時,也降低了中央倉庫的負荷。

20180928153813437032303.png

Nexus僅僅是私服的一種。

通過上面說明如果還不能理解maven和nexus是什么,可以對比一下yum倉庫以及本地yum源,maven只不過是將/etc/yum.repos.d/*.repo源換做項目中的pom.xml調用的jar源。

安裝及配置

安裝Maven

在centos7系統安裝maven很簡單,直接使用yum安裝就可以,不過在安裝maven之前首先要配置系統的 JDK (java)環境。春雨使用ansible進行部署,對應的role是 maven 。

playbook:

$ cat maven.yml
---
- hosts: ucloudgather_facts: Falseroles:- role: maven

使用方法:

$ ansible-playbook maven.yml 

安裝Nexus

官方建議 服務器硬件配置:

  • CPU:≥4核
  • memory:≥4G (do not set max heap size larger than 4GB
  • fd:65536

安裝依賴

  • Java 8
  • maven
  • npm

Java和maven在上面的過程已安裝,接下來只需要安裝npm,步驟如下:

# 安裝之前先創建對應的目錄
$ mkdir /home/node
$ cd /home/node# 使用nodejs管理npm
$ wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz# 解壓
$ tar Jxvf node-v8.12.0-linux-x64.tar.xz
$ mv node-v8.12.0-linux-x64 nodejs# 加入系統環境
$ ln -s /home/node/nodejs/bin/node /usr/bin/node
$ ln -s /home/node/nodejs/bin/npm /usr/bin/npm# 升級npm
$ npm install npm@latest -g

安裝Nexus2

$ cd /usr/local/
$ wget https://download.sonatype.com/nexus/oss/nexus-2.13.0-01-bundle.tar.gz
$ tar xvzf nexus-2.13.0-01-bundle.tar.gz
$ ln -s nexus-2.13.0-01 nexus
## nexus-2.13.0-01:應用目錄
## sonatype-work:數據目錄,存放所有的repo# 啟動
$ cd /usr/local/nexus/bin/
$ ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.$ vim /usr/local/nexus/bin/nexus
RUN_AS_USER=root$  ./nexus start 
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...
Started Nexus OSS.$ tail -f /usr/local/nexus/logs/wrapper.log

啟動成功后在瀏覽器訪問(localhost:8081/nexus/):http://192.168.228.130:8081/nexus/ ,進入web界面

20181009153910077425615.png

使用管理員用戶登錄,賬號:admin 密碼:admin123。如果使用sonatype管理用戶和密碼,可以通過設置——change password來更改密碼,如果集成了ldap用戶,則無法通過此方法更改密碼。

  • 系統優化:

    sonatype需要配置系統文件描述符數量為 65536,配置方法如下:

    # 查看當前系統可打開文件描述符數量
    $ ulimit -n# 修改文件描述符數量
    ## 臨時修改
    $ ulimit -n 65535
    ## 永久修改
    $ vim /etc/security/limits.conf
    nexus - nofile 65536
    

    如果 加入了systemd管理 nexus,上述方法是不生效的,配置方法如下:

    # 加入systemd管理
    $ vim /usr/lib/systemd/system/nexus.service
    [Unit]
    Description=nexus service
    After=network.target[Service]
    Type=forking
    LimitNOFILE=65536
    ExecStart=/usr/local/nexus/bin/nexus start
    ExecStop=/usr/local/nexus/bin/nexus stop
    Restart=on-abort[Install]
    WantedBy=multi-user.target
    

    管理nexus服務:

    $ systemctl daemon-reload
    $ systemctl start nexus
    

集成ldap

20181010153910124649981.png

Nexus管理

Nexus倉庫類型
  • hosted 宿主倉庫:主要用于部署無法從公共倉庫獲取的構件(如 oracle 的 JDBC 驅動)以及自己或第三方的項目構件;
  • proxy 代理倉庫:代理公共的遠程倉庫;
  • virtual 虛擬倉庫:用于適配 Maven 1;
  • group 倉庫組:Nexus 通過倉庫組的概念統一管理多個倉庫,這樣我們在項目中直接請求倉庫組即可請求到倉庫組管理的多個倉庫。

20181009153909089499206.png

倉庫常見操作
  • 修改默認存儲路徑
  • 同步索引
  • 修改遠程同步地址為aliyun鏡像地址

代理maven-proxy

  • 更改maven配置 編輯maven的settings.xml文件,更改mirror、profile、activeProfiles模塊的內容如下:

    $ vim /etc/maven/settings.xml
    <settings><mirrors><mirror><!--This sends everything else to /public --><id>nexus</id><mirrorOf>*</mirrorOf><url>http://localhost:8081/repository/maven-proxy/</url></mirror></mirrors><profiles><profile><id>nexus</id><!--Enable snapshots for the built in central repo to direct --><!--all requests to nexus via the mirror --><repositories><repository><id>central</id><url>http://central</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://central</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories></profile></profiles><activeProfiles><!--make the profile active all the time --><activeProfile>nexus</activeProfile></activeProfiles>
    </settings>
    
  • 進入web,配置nexus: 2018101015391861131094.png

  • 在項目中調用(pom.xml):http://maven.apache.org/guides/mini/guide-mirror-settings.html

參考資料

https://www.sonatype.com/

https://help.sonatype.com/repomanager2

http://www.mdslq.cn/archives/d406f18d.html

轉載于:https://my.oschina.net/adailinux/blog/2247017

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

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

相關文章

Linux kernel的中斷子系統之(九):tasklet

返回目錄&#xff1a;《ARM-Linux中斷系統》。 總結&#xff1a; 二介紹了tasklet存在的意義。 三介紹了通過tasklet_struct來抽想一個tasklet&#xff0c;每個CPU維護一個tasklet鏈表tasklet_vec/tasklet_hi_vec&#xff0c;然后介紹了如何定一個一個tasklet(靜態/動態)&#…

市面主要遠場語音交互技術架構

為什么Google Home要采用雙麥方案&#xff0c;而且大部分智能音箱才用環形六麥&#xff1f;事實上&#xff0c;這是由各家不同的技術架構決定的&#xff0c;當前市面上主要存在三種遠場語音交互技術架構。 1、以Google為代表的純云端技術架構 首先就是以Google為代表的純云端技…

iOSPush自動隱藏tabbar

只需要在UITabBarController添加控制器的時候調用YZNav初始化&#xff0c;就可以實現tabbar的自動隱藏了。 直接上github地址&#xff1a;https://github.com/YouZhiZheShiJingCheng/YZNav 轉載于:https://www.cnblogs.com/BK-12345/p/6472815.html

中國智能高清視頻監控未來發展趨勢

瀏覽數: 1228 海康威視&#xff1a;田振華 《中國公共安全》&#xff1a;您認為高清攝像機將朝著哪個方向發展&#xff1f;像素會達到什么標準&#xff1f; 高清攝像機發展趨勢&#xff1a; 一&#xff1a;高清 雖然說現在已經實現高清&#xff0c;但是從顯示效果來看現有的高…

智能音箱 之 功放介紹

基本分類 功率放大器分甲類功放&#xff08;A 類&#xff09;&#xff0c;乙類&#xff08;B 類&#xff09;&#xff0c;甲乙類&#xff08;AB 類&#xff09;和丁類&#xff08;D 類&#xff09;&#xff1b; A 類 指在信號的整個周期內&#xff0c;放大器的任何功率輸出…

create_workqueue和create_singlethread_workqueue【轉】

本文轉載自&#xff1a;http://bgutech.blog.163.com/blog/static/18261124320116181119889/ 1. 什么是workqueueLinux中的Workqueue機制就是為了簡化內核線程的創建。通過調用workqueue的接口就能創建內核線程。并且可以根據當前系統CPU的個數創建線程的數量&#xff0c;使得線…

平安城市與智慧城市對接的關鍵要素

平安城市經過前兩個階段&#xff08;布點、聯網&#xff09;的大規模建設之后&#xff0c;如今正向系統應用深化&#xff0c;數據深入挖掘利用的方向發展。以視頻監控為基礎單元&#xff0c;一些城市開始嘗試在既有的社會治安管理平臺系統基礎上拓展更多的應用功能&#xff0c;…

vue學習之路.02

2019獨角獸企業重金招聘Python工程師標準>>> 第一個vue項目 1.創建 vue init webpack app01 2.安裝依賴 cd app01 npm install 3.構建 npm run dev 啟動本機的8080端口 或 …

等價表達式

小目標的最后一步。 原題鏈接&#xff1a;https://www.luogu.org/problem/show?pid1054 精力不足&#xff0c;代碼工作可能要放在后幾天。。。 思路已經明確了&#xff0c;我說一下。 這道題的大意是給出若干表達式&#xff0c;問這些表達式的值和初始表達式的值是不是相等。 …

解析電子墨水屏技術(工作原理與LCD的區別)

閱讀電子書早已成為大家生活中一部分&#xff0c;方便輕巧的電子版書籍更便于攜帶&#xff0c;而電子閱讀器也不僅僅局限于電腦、手機等傳統設備&#xff0c;新興的電子書閱讀器漸漸為我們所接受。E-ink電子墨水技術就是現在最著名的產品之一&#xff0c;他的出現讓電子書閱讀器…

27:級數求和

27:級數求和 查看提交統計提問總時間限制: 1000ms內存限制: 65536kB描述已知&#xff1a;Sn 1&#xff0b;1&#xff0f;2&#xff0b;1&#xff0f;3&#xff0b;…&#xff0b;1&#xff0f;n。顯然對于任意一個整數K&#xff0c;當n足夠大的時候&#xff0c;Sn大于K。 現給出…

入門視頻采集與處理(BT656簡介) 轉

凡是做模擬信號采集的&#xff0c;很少不涉及BT.656標準的&#xff0c;因為常見的模擬視頻信號采集芯片都支持輸出BT.656的數字信號&#xff0c;那么&#xff0c;BT.656到底是何種格式呢&#xff1f;本文將主要介紹 標準的 8bit BT656&#xff08;4:2:2&#xff09;YCbCr SDTV&…

眼圖(Eye Diagram)與數字信號測試

問題: 什么是眼圖&#xff1f;它用在什么場合&#xff1f;反映了波形的什么信息&#xff1f;NI相應的解決方案是怎樣的&#xff1f; 解答: 眼圖&#xff08;Eye Diagram&#xff09;可以顯示出數字信號的傳輸質量&#xff0c;經常用于需要對電子設備、芯片中串行數字信號或者…

BZOJ 1609 [Usaco2008 Feb]Eating Together麻煩的聚餐:LIS LDS (nlogn)

題目鏈接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id1609 題意&#xff1a; 給你一個只由數字"1,2,3"組成的序列a[i]&#xff0c;共n個數。 你可以任意更改這些數字&#xff0c;使得序列中每一種數字都“站在一起”&#xff0c;并且單調不減或不增…

Oracle 數據庫字典 sys.obj$ 表中關于type#的解釋

sys.obj$ 表是oracle 數據庫字典表中的對象基礎表&#xff0c;所有對象都在該表中有記錄&#xff0c;其中type#字段表明對象類型&#xff0c;比如有一個表 test &#xff0c;則該對象在sys.obj$ 中存在一條記錄&#xff0c;name列為test&#xff0c; type#列為2&#xff0c;表示…

Python高級特性:列表生成式

列表生成式即List Comprehensions&#xff0c;是Python內置的非常簡單卻強大的可以用來創建list的生成式。 最常見的例子&#xff1a; 生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))&#xff1a;>>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8…

2018年智能音箱對比

眾所周知&#xff0c;2014年底&#xff0c;電商巨頭亞馬遜推出智能音箱產品Echo之后&#xff0c;引起市場的強烈反響。隨后、谷歌、微軟、蘋果均開始布局智能音箱市場&#xff0c;國內公司以玲瓏科技打頭陣。2017年國內公司紛紛發布智能音箱&#xff0c;被稱為智能音箱元年。經…

AMD與CMD區別

AMD&#xff1a;異步模塊定義&#xff0c;是一個瀏覽器端模塊化開發的規范&#xff0c;由于不是原生JS支持,使用AMD規范需要用到require.js庫require.js注意解決兩個問題1、多個js文件可能有依賴關系&#xff0c;被依賴的文件需要早于依賴它的文件加載到瀏覽器2、js加載的時候瀏…

[LeetCode] Interleaving String

1. 是一個很明顯的動態規劃題。 2. s3中的每個字符不是s1中的就是s2中的&#xff0c;只要根據它之前的狀態做轉移就可以。 1 class Solution {2 public:3 bool isInterleave(string s1, string s2, string s3) {4 int n s1.size();5 int m s2.size();6 …