構建工具: 經過簡單的命令,可以完成清理、編譯、測試、打包、部署等一系列過程。同時,不得不提的是,Maven是跨平臺的,不管是在Windows、仍是在Linux或Mac上,均可以使用一樣的命令。html
依賴管理工具:java
項目依賴的第三方的開源類庫,均可以經過依賴的方式引入到項目中來。代替了原來須要首先下載第三方jar,再加入到項目中的方式。從而更好的解決了合做開發中依賴增多、版本不一致、版本衝突、依賴臃腫等問題。node
項目信息管理工具: 可以管理項目描述、開發者列表、版本控制系統地址、許可證等一些比較零散的項目信息。除了直接的項目信息,經過Maven自動生成的站點,以及一些已有的插件,還可以輕鬆得到項目文檔、測試報告、靜態分析報告、源碼版本、日誌報告等很是具備價值的項目信息。linux
這個問題從Maven的第二個用處提及,依賴管理,經過在Pom中指定座標的形式將jar引入到項目中。那這個過程,要經歷怎樣一個流程呢?從哪裏尋找jar?下載的jar放到哪裏?git
將這個問題順下來,就知道nexus和maven的關係了。web
從哪裏找到jar?項目用到的jar又存放在哪裏?這引出了倉庫的概念,maven經過倉庫來統一管理各類構件。Maven的倉庫分爲本地倉庫和遠程倉庫。apache
當Maven根據座標尋找構件時,它首先會查看本地倉庫,若是本地倉庫存在此構件,則直接使用;若是本地倉庫不存在此構件,或者須要查看是否有更新的構件版本,Maven會去遠程倉庫查找,發現須要的構件以後,下載到本地倉庫再使用。npm
到了這裏,問題的答案也就出來了。vim
首先,Nexus是一種遠程倉庫,根據上段的介紹,咱們已經知道遠程倉庫的做用。在遠程倉庫中,默認的是中央倉庫,中央倉庫是Maven核心自帶的遠程倉庫。那就使用中央倉庫不就得了嗎,爲何咱們要安裝Nexus呢?centos
咱們從項目實際開發來看:
Nexus僅僅是私服的一種。
經過上面說明若是還不能理解maven和nexus是什麼,能夠對比一下yum倉庫以及本地yum源,maven只不過是將/etc/yum.repos.d/*.repo源換作項目中的pom.xml調用的jar源。
在centos7系統安裝maven很簡單,直接使用yum安裝就能夠,不過在安裝maven以前首先要配置系統的 JDK (java)環境。春雨使用ansible進行部署,對應的role是 maven 。
playbook:
$ cat maven.yml --- - hosts: ucloud gather_facts: False roles: - role: maven
使用方法:
$ ansible-playbook maven.yml
官方建議 服務器硬件配置:
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
$ 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界面
使用管理員用戶登陸,帳號: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
更改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:
在項目中調用(pom.xml):http://maven.apache.org/guides/mini/guide-mirror-settings.html