若是構建的Maven項目本地倉庫沒有對應的依賴包,那麼就會去Nexus私服去下載, 那麼若是Nexus私服也沒有此依賴包,就回去遠程中央倉庫下載依賴, Nexus私服下載成功後再下載至本地Maven庫供項目引用web
myeclipse中集成了maven,若是它鏈接的是中央倉庫,不是私有庫,若是沒有配置本地庫,下載的依賴默認是在~/.me/repository
文件加下面,若是配置了本地庫,就會下載到自定義的本地庫中,好比~/apache-maven-3.1.0/.me/repository
apache
環境:CentOS 6.6 Final、JDK七、Sonatype Nexus、Maven
IP:192.168.4.221
root 用戶操做
前提:已安裝 JDK7 並配置好了環境變量
一、下載最新版 Nexus(本教程使用的是:nexus-2.11.2-03-bundle.tar.gz),下載地址:
http://www.sonatype.org/nexus/go/瀏覽器
# wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2- 03-bundle.tar.gz
二、解壓架構
# 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 服務,一個私有庫目錄)
ps:
進入nexus-2.11.2-03下的lib服務發現有大量的jetty包,說明是經過jetty運行服務的
三、編輯 Nexus 的 nexus.properties 文件,配置端口和 work 目錄信息(保留默認)oracle
# cd nexus-2.11.2-03 # ls bin conf lib LICENSE.txt logs nexus NOTICE.txt tmp
查看目錄結構,jetty 運行app
# cd conf # vi nexus.properties # Jetty section //jetty的端口 application-port=8081 //容許全部的ip都能訪問 application-host=0.0.0.0 //app位置在${bundleBasedir}/nexus nexus-webapp=${bundleBasedir}/nexus //項目訪問的名字是nexus nexus-webapp-context-path=/nexus # Nexus section //工做目錄,即上面的私有庫目錄,裏面目前什麼都沒有 nexus-work=${bundleBasedir}/../sonatype-work/nexus runtime=${bundleBasedir}/nexus/WEB-INF
四、編輯 nexus 腳本, 配置 RUN_AS_USER 參數eclipse
# vi /root/nexus/nexus-2.11.2-03/bin/nexus #RUN_AS_USER= 改成: RUN_AS_USER=root
基於 Dubbo 的分佈式系統架構視頻教程 做者:吳水成,840765167@qq.com,wu-sc@foxmail.com
五、防火牆中打開 8081 端口webapp
# vi /etc/sysconfig/iptables
添加:maven
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
保存後重啓防火牆tcp
# service iptables restart
六、啓動 nexus
# /root/nexus/nexus-2.11.2-03/bin/nexus start **************************************** WARNING - NOT RECOMMENDED TO RUN AS ROOT **************************************** Starting Nexus OSS... Started Nexus OSS.
七、瀏覽器中打開:http://192.168.4.221:8081/nexus/
八、登陸,默認用戶名 admin,默認密碼 admin123:
到此,Nexus 已安裝完成,接下來是 Nexus 的配置
一、菜單 Administration/Server 配置郵箱服務地址(若是忘記密碼,能夠經過該郵箱找回密 碼)
給用戶配置郵箱地址,方便忘記密碼時找回:
點擊Test SMTP setting能夠測試郵箱是否能設置,點擊validate,點擊最後的保存後會發送郵件。
有三個用戶,管理員用戶(admin)、部署用戶(deployment)、anoymous(有道上查的是匿名的,自我理解是遊客吧,嘿嘿)
點擊郵箱可以修改用戶的郵箱==>save
以後退出後再次進入nexus==>輸入username和e-mail(剛剛新設置的email)便可從新登陸
用戶修改密碼
二、倉庫類型
group 倉庫組(public repository):Nexus 經過倉庫組的概念統一管理多個倉庫,這樣咱們在項目中直接請求倉庫組便可請求到倉庫組管理的多個倉庫;
意思就是上圖的public repository包含裏下面的全部的倉庫
hosted 宿主倉庫:主要用於發佈內部項目構件或第三方的項目構件(如購買商業的構件)以及沒法從公共倉庫獲取的構件(如 oracle 的 JDBC 驅動)
proxy 代理倉庫:代理公共的遠程倉庫; (上面的三個均可以理解爲中央倉庫)
virtual 虛擬倉庫:用於適配 Maven 1; (基本不用)
通常用到的倉庫種類是 hosted、proxy
Hosted 倉庫經常使用類型說明:
releases 內部的模塊中 release 模塊的發佈倉庫,就是咱們本身的項目給了一個version ,而後經過deploy就會發布到私有倉庫的releases庫中
snapshots 發佈內部的 SNAPSHOT 模塊的倉庫,好比項目的verison是1.0-SNAPSHOTS
上面兩個能夠理解爲就是咱們本身寫的項目install可以install到本地供其餘項目訪問的模塊
三、設置 proxy 代理倉庫(Apache Snapshots/Central/Codehaus Snapshots)准許遠程下載, 如:
注意遠程倉庫一共有三個,都要進行設置。
若是不設置就不能調動中央庫,若是點擊了保存,看左側列表中的Scheduled Task ,發現有任務正在運行,就是去下載中央庫的索引
下載完以後點擊Brows Index > Fefresh>點擊下面的文件加,會出現中央庫各類文件的索引
四、Maven 本地庫的安裝與配置(請看參考視頻的操做) 環境變量、setting.xml
本地庫鏈接私有庫==>私有庫代理遠程倉庫
下載一個maven的解壓包==>加壓==>進入conf目錄==>新建一個settins.xml,名字自定義,好比settings_edu.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> //配置本地庫的目錄,若是不配置的話,Myeclipse的默認下載路徑就是~/.m2/repository <localRepository>E:/apache-maven-3.1.0/.m2/repository</localRepository> <interactiveMode>true</interactiveMode> <offline>false</offline> <pluginGroups> <pluginGroup>org.mortbay.jetty</pluginGroup> <pluginGroup>org.jenkins-ci.tools</pluginGroup> </pluginGroups> <!--配置權限,使用默認用戶--> //設置使用哪一個用戶鏈接本地庫 <servers> <server> <id>nexus-releases</id> <username>deployment</username> <password>deployment123</password> </server> <server> <id>nexus-snapshots</id> <username>deployment</username> <password>deployment123</password> </server> </servers> <mirrors> </mirrors> <profiles> <profile> <id>edu</id> //配置jdk版本 <activation> <activeByDefault>false</activeByDefault> <jdk>1.6</jdk> </activation> <repositories> //<!-- 私有庫地址,配置私有庫--> <repository> <id>nexus</id> //這裏了是倉庫組的地址,地址的具體內容在上面介紹的客戶端倉庫類型的圖片中可以找到 <url>http://192.168.4.221:8081/nexus/content/groups/public/</url> //release被snapshaots都設置成生效。 <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> //<!--插件庫地址-->,插件庫也須要從倉庫下載 //這裏也經過私服代理 <pluginRepository> <id>nexus</id> <url>http://192.168.4.221:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> //<!--激活profile--> //注意上面profile的配置中<id>edu</id>,id是edu,須要在這裏激活一下 <activeProfiles> <activeProfile>edu</activeProfile> </activeProfiles> </settings>
五、MyEclipse 中的 Maven 配置(請看參考視頻的操做)
上面修改了本身maven的本地配置文件,這裏須要在eclipse中進行配置:
打開配置==>MyEclipse==>Maven4==>MyEclipse==>Installations==>edit ----配置本身maven的目錄
打開配置==>MyEclipse==>Maven4==>MyEclipse==>User Settings==>Browse指向剛纔上面的配置文件==>update setting ----修改默認的配置文件settings.xml爲新的settings_edu.xml(名字隨具體狀況而定,上面的xml命名是什麼這裏就是什麼)
六、項目的構建與發佈演示(請看參考視頻的操做)
修改 common-parent 中的 pom.xml 中的私有庫地址,這個項目中原來的私有庫地址是做者本身的,因此應該修改成剛剛本身從新搭建的私有庫地址(沒有前幾節的背景,能夠忽略這步)
演示如何把common-parent項目部署到私有庫上,eclipse中打開common-parent的pom.xml,右鍵==>運行==>Maven build==>Browse Workspace==>選擇common-parent項目==>Goals:clean install deploy(install安裝到本地庫,deploy發佈到私有庫)>Profiles:pom.xml>點擊run
而後回到客戶端,點擊Snapshots的repositories==>點擊下面的refresh==>發現已經有了剛剛上傳到私有庫的項目,可是這裏不是一個jar包,只是一個pom,一個maven工程的附文件,由於當前的pom文件pom,若是jar的話就會上傳jar包==>右側有別人引用這個項目所須要輸入的內容
這裏注意但願發佈到Snapshots仍是Realese經過本身pom文件的配置進行修改,就會發布到對應的倉庫中
若是common-core項目依賴common-parent項目,但是common-parent項目已經更新了不少版本,如何在本身的項目中更新引用呢? 點common-core的pom.xml,>右擊>run as ==>maven isntall便可
七、上傳第三方包操做演示
進入客戶端==>點擊3rd party==>Artifact Upload==>GAV Definition 選擇GAV Parameters==>下面自行填寫group id、artifact、version、pacakging選擇jar包==>點擊select Artifact(s) to Upload==>選中jar包==>點擊add Artifact==>點擊upload Artifacts
點擊3rd party的Browse Index > 點擊refresh ,發現已經有了jar包>右側有引用的pependency的寫法。