Maven and Nexus2
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Maven and Nexus2
Maven是什么?
-
構(gòu)建工具: 通過(guò)簡(jiǎn)單的命令,能夠完成清理、編譯、測(cè)試、打包、部署等一系列過(guò)程。同時(shí),不得不提的是,Maven是跨平臺(tái)的,無(wú)論是在Windows、還是在Linux或Mac上,都可以使用同樣的命令。
-
依賴(lài)管理工具:
項(xiàng)目依賴(lài)的第三方的開(kāi)源類(lèi)庫(kù),都可以通過(guò)依賴(lài)的方式引入到項(xiàng)目中來(lái)。代替了原來(lái)需要首先下載第三方j(luò)ar,再加入到項(xiàng)目中的方式。從而更好的解決了合作開(kāi)發(fā)中依賴(lài)增多、版本不一致、版本沖突、依賴(lài)臃腫等問(wèn)題。
-
項(xiàng)目信息管理工具: 能夠管理項(xiàng)目描述、開(kāi)發(fā)者列表、版本控制系統(tǒng)地址、許可證等一些比較零散的項(xiàng)目信息。除了直接的項(xiàng)目信息,通過(guò)Maven自動(dòng)生成的站點(diǎn),以及一些已有的插件,還能夠輕松獲得項(xiàng)目文檔、測(cè)試報(bào)告、靜態(tài)分析報(bào)告、源碼版本、日志報(bào)告等非常具有價(jià)值的項(xiàng)目信息。
Maven V·S Nexus
這個(gè)問(wèn)題從Maven的第二個(gè)用處說(shuō)起,依賴(lài)管理,通過(guò)在Pom中指定坐標(biāo)的形式將jar引入到項(xiàng)目中。那這個(gè)過(guò)程,要經(jīng)歷怎樣一個(gè)流程呢?從哪里尋找jar?下載的jar放到哪里?
將這個(gè)問(wèn)題順下來(lái),就知道nexus和maven的關(guān)系了。
從哪里找到j(luò)ar?項(xiàng)目用到的jar又存放在哪里?這引出了倉(cāng)庫(kù)的概念,maven通過(guò)倉(cāng)庫(kù)來(lái)統(tǒng)一管理各種構(gòu)件。Maven的倉(cāng)庫(kù)分為本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)。
當(dāng)Maven根據(jù)坐標(biāo)尋找構(gòu)件時(shí),它首先會(huì)查看本地倉(cāng)庫(kù),如果本地倉(cāng)庫(kù)存在此構(gòu)件,則直接使用;如果本地倉(cāng)庫(kù)不存在此構(gòu)件,或者需要查看是否有更新的構(gòu)件版本,Maven會(huì)去遠(yuǎn)程倉(cāng)庫(kù)查找,發(fā)現(xiàn)需要的構(gòu)件之后,下載到本地倉(cāng)庫(kù)再使用。
到了這里,問(wèn)題的答案也就出來(lái)了。
首先,Nexus是一種遠(yuǎn)程倉(cāng)庫(kù),根據(jù)上段的介紹,我們已經(jīng)知道遠(yuǎn)程倉(cāng)庫(kù)的作用。在遠(yuǎn)程倉(cāng)庫(kù)中,默認(rèn)的是中央倉(cāng)庫(kù),中央倉(cāng)庫(kù)是Maven核心自帶的遠(yuǎn)程倉(cāng)庫(kù)。那就使用中央倉(cāng)庫(kù)不就得了嗎,為什么我們要安裝Nexus呢?
我們從項(xiàng)目實(shí)際開(kāi)發(fā)來(lái)看:
Nexus僅僅是私服的一種。
通過(guò)上面說(shuō)明如果還不能理解maven和nexus是什么,可以對(duì)比一下yum倉(cāng)庫(kù)以及本地yum源,maven只不過(guò)是將/etc/yum.repos.d/*.repo源換做項(xiàng)目中的pom.xml調(diào)用的jar源。
安裝及配置
安裝Maven
在centos7系統(tǒng)安裝maven很簡(jiǎn)單,直接使用yum安裝就可以,不過(guò)在安裝maven之前首先要配置系統(tǒng)的 JDK (java)環(huán)境。春雨使用ansible進(jìn)行部署,對(duì)應(yīng)的role是 maven 。
playbook:
$ cat maven.yml --- - hosts: ucloudgather_facts: Falseroles:- role: maven使用方法:
$ ansible-playbook maven.yml安裝Nexus
官方建議 服務(wù)器硬件配置:
- CPU:≥4核
- memory:≥4G (do not set max heap size larger than 4GB)
- fd:65536
安裝依賴(lài)
- Java 8
- maven
- npm
Java和maven在上面的過(guò)程已安裝,接下來(lái)只需要安裝npm,步驟如下:
# 安裝之前先創(chuàng)建對(duì)應(yīng)的目錄 $ 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# 加入系統(tǒng)環(huán)境 $ ln -s /home/node/nodejs/bin/node /usr/bin/node $ ln -s /home/node/nodejs/bin/npm /usr/bin/npm# 升級(jí)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:應(yīng)用目錄 ## sonatype-work:數(shù)據(jù)目錄,存放所有的repo# 啟動(dòng) $ 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啟動(dòng)成功后在瀏覽器訪問(wèn)(localhost:8081/nexus/):http://192.168.228.130:8081/nexus/ ,進(jìn)入web界面
使用管理員用戶(hù)登錄,賬號(hào):admin 密碼:admin123。如果使用sonatype管理用戶(hù)和密碼,可以通過(guò)設(shè)置——change password來(lái)更改密碼,如果集成了ldap用戶(hù),則無(wú)法通過(guò)此方法更改密碼。
-
系統(tǒng)優(yōu)化:
sonatype需要配置系統(tǒng)文件描述符數(shù)量為 65536,配置方法如下:
# 查看當(dāng)前系統(tǒng)可打開(kāi)文件描述符數(shù)量 $ ulimit -n# 修改文件描述符數(shù)量 ## 臨時(shí)修改 $ 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服務(wù):
$ systemctl daemon-reload $ systemctl start nexus
集成ldap
Nexus管理
Nexus倉(cāng)庫(kù)類(lèi)型
- hosted 宿主倉(cāng)庫(kù):主要用于部署無(wú)法從公共倉(cāng)庫(kù)獲取的構(gòu)件(如 oracle 的 JDBC 驅(qū)動(dòng))以及自己或第三方的項(xiàng)目構(gòu)件;
- proxy 代理倉(cāng)庫(kù):代理公共的遠(yuǎn)程倉(cāng)庫(kù);
- virtual 虛擬倉(cāng)庫(kù):用于適配 Maven 1;
- group 倉(cāng)庫(kù)組:Nexus 通過(guò)倉(cāng)庫(kù)組的概念統(tǒng)一管理多個(gè)倉(cāng)庫(kù),這樣我們?cè)陧?xiàng)目中直接請(qǐng)求倉(cāng)庫(kù)組即可請(qǐng)求到倉(cāng)庫(kù)組管理的多個(gè)倉(cāng)庫(kù)。
倉(cāng)庫(kù)常見(jiàn)操作
- 修改默認(rèn)存儲(chǔ)路徑
- 同步索引
- 修改遠(yuǎn)程同步地址為aliyun鏡像地址
代理maven-proxy
-
更改maven配置 編輯maven的settings.xml文件,更改mirror、profile、activeProfiles模塊的內(nèi)容如下:
$ 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> -
進(jìn)入web,配置nexus:
-
在項(xiàng)目中調(diào)用(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
轉(zhuǎn)載于:https://my.oschina.net/adailinux/blog/2247017
總結(jié)
以上是生活随笔為你收集整理的Maven and Nexus2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 传锤子科技解散成都分公司 才搬迁一年罗永
- 下一篇: axios某一接口失败后不调用_axio