<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Nexus圖文介紹

    Nexus介紹

    Nexus 是Maven倉庫管理器,如果你使用Maven,你可以從Maven中央倉庫 下載所需要的構(gòu)件(artifact),但這通常不是一個(gè)好的做法,你應(yīng)該在本地架設(shè)一個(gè)Maven倉庫服務(wù)器,在代理遠(yuǎn)程倉庫的同時(shí)維護(hù)本地倉庫,以節(jié)省帶寬和時(shí)間,Nexus就可以滿足這樣的需要。此外,他還提供了強(qiáng)大的倉庫管理功能,構(gòu)件搜索功能,它基于REST,友好的UI是一個(gè)extjs的REST客戶端,它占用較少的內(nèi)存,基于簡(jiǎn)單文件系統(tǒng)而非數(shù)據(jù)庫。這些優(yōu)點(diǎn)使其日趨成為最流行的Maven倉庫管理器。

     

    下載和安裝

    你可以從http://nexus.sonatype.org/downloads/  或是http://www.5a520.cn 下載最新版本的Nexus,筆者使用的是1.3.0版本。

    Nexus提供了兩種安裝方式,一種是內(nèi)嵌Jetty的bundle,只要你有JRE就能直接運(yùn)行。第二種方式是WAR,你只須簡(jiǎn)單的將其發(fā)布到web容器中即可使用。

     

    Bundle方式安裝

    解壓nexus-webapp-1.3.0-bundle.zip 至任意目錄,如D:\dev_tools ,然后打開CMD,cd至目錄D:\dev_tools\nexus-webapp-1.3.0\bin\jsw\windows-x86-32 ,運(yùn)行Nexus.bat 。你會(huì)看到Nexus的啟動(dòng)日志,當(dāng)你看到“Started SelectChannelConnector@0.0.0.0:8081”之后,說明Nexus啟動(dòng)成功了,然后打開瀏覽器,訪問http://127.0.0.1:8081/nexus,你會(huì)看到如下的頁面:

    要停止Nexus,Ctrl+C即可,此外InstallNexus.bat可以用來將Nexus安裝成一個(gè)windows服務(wù),其余的腳本則對(duì)應(yīng)了啟動(dòng),停止,暫停,恢復(fù),卸載Nexus服務(wù)。

     

    WAR方式安裝

    你需要有一個(gè)能運(yùn)行的web容器,這里以Tomcat為例,加入Tomcat的安裝目錄位于D:\dev_tools\apache-tomcat-6.0.18 ,首先我們將下載的nexus-webapp-1.3.0.war 重命名為nexus.war ,然后復(fù)制到D:\dev_tools\apache-tomcat-6.0.18\webapps\nexus.war ,然后啟動(dòng)CMD,cd到D:\dev_tools\apache-tomcat-6.0.18\bin\ 目錄,運(yùn)行startup.bat 。一切OK,現(xiàn)在可以打開瀏覽器訪問http://www.bt285.cn :8080/nexus,你會(huì)得到和上圖一樣的界面。

     

    代理外部Maven倉庫

    登陸

    要管理Nexus,你首先需要以管理員身份登陸,點(diǎn)擊界面右上角的login,輸入默認(rèn)的登錄名和密碼:admin/admin123,登陸成功后,你會(huì)看到左邊的導(dǎo)航欄增加了很多內(nèi)容:

    這里,可以管理倉庫,配置Nexus系統(tǒng),管理任務(wù),管理用戶,角色,權(quán)限,查看系統(tǒng)的RSS源,管理及查看系統(tǒng)日志,等等。你會(huì)看到Nexus的功能十分豐富和強(qiáng)大,本文,筆者只介紹一些最基本的管理和操作。

     

    代理Maven中央倉庫

    點(diǎn)擊左邊導(dǎo)航欄的Repositories,界面的主面板會(huì)顯示所有一個(gè)所有倉庫及倉庫組的列表,你會(huì)看到它們的Type字段的值有g(shù)roup,hosted,proxy,virtual。這里我們不關(guān)心virtual,只介紹下另外三種類型:

    • hosted,本地倉庫,通常我們會(huì)部署自己的構(gòu)件到這一類型的倉庫。
    • proxy,代理倉庫,它們被用來代理遠(yuǎn)程的公共倉庫,如maven中央倉庫。
    • group,倉庫組,用來合并多個(gè)hosted/proxy倉庫,通常我們配置maven依賴倉庫組。

    由此我們知道,我們需要配置一個(gè)Maven中央倉庫的proxy,其實(shí)Nexus已經(jīng)內(nèi)置了Maven Central,但我們需要做一些配置。點(diǎn)擊倉庫列表中的Maven Central,你會(huì)注意到它的Policy是release,這說明它不會(huì)代理遠(yuǎn)程倉庫的snapshot構(gòu)件,這是有原因的,遠(yuǎn)程倉庫的snapshot版本構(gòu)件不穩(wěn)定且不受你控制,使用這樣的構(gòu)件含有潛在的風(fēng)險(xiǎn)。然后我們發(fā)現(xiàn)主面板下方有三個(gè)Tab,分別為Browse,Configuration和Mirrors,我們點(diǎn)擊Configuration進(jìn)行配置,你現(xiàn)在需要關(guān)心的是兩個(gè)配置項(xiàng):“Remote Storage Location”為遠(yuǎn)程倉庫的地址,對(duì)于Maven Central來說是http://repo1.maven.org/maven2/;“Download Remote Indexes”顧名思義是指是否下載遠(yuǎn)程索引文件,Maven Central的該字段默認(rèn)為False,這是為了防止大量Nexus無意識(shí)的去消耗中央倉庫的帶寬(中央倉庫有大量的構(gòu)件,其索引文件也很大)。這里我們需要將其設(shè)置為True,然后點(diǎn)擊Save。在Nexus下載的中央倉庫索引文件之后,我們就可以在本地搜索中央倉庫的所有構(gòu)件。下圖展示了我們剛才所涉及的配置:

     

    添加一個(gè)代理倉庫

    這里我們?cè)倥e一個(gè)例子,我們想要代理Sonatype的公共倉庫,其地址為:http://repository.sonatype.org/content/groups/public/。步驟如下,在Repositories面板的上方,點(diǎn)擊Add,然后選擇Proxy Repository,在下方的配置部分,我們填寫如下的信息:Repository ID - sonatype;Repository Name - Sonatype Repository;Remote Storage Location - http://repository.sonatype.org/content/groups/public/。其余的保持默認(rèn)值,需要注意的是Repository Policy,我們不想代理snapshot構(gòu)件,原因前面已經(jīng)描述。然后點(diǎn)擊Save。配置頁面如下:

     

    管理本地Maven倉庫

    Nexus預(yù)定義了3個(gè)本地倉庫,分別為Releases,Snapshots,和3rd Party。這三個(gè)倉庫都有各自明確的目的。Releases用于部署我們自己的release構(gòu)件,Snapshots用于部署我們自己的snapshot構(gòu)件,而3rd Party用于部署第三方構(gòu)件,有些構(gòu)件如Oracle的JDBC驅(qū)動(dòng),我們不能從公共倉庫下載到,我們就需要將其部署到自己的倉庫中。

    當(dāng)然你也可以創(chuàng)建自己的本地倉庫,步驟和創(chuàng)建代理倉庫類似,點(diǎn)擊Repository面板上方的Add按鈕,然后選擇Hosted Repository,然后在下方的配置面板中輸入id和name,注意這里我們不再需要填寫遠(yuǎn)程倉庫地址,Repository Type則為不可修改的hosted,而關(guān)于Repository Policy,你可以根據(jù)自己的需要選擇Release或者Snapshot,如圖:

     

    管理Maven倉庫組

    Nexus中倉庫組的概念是Maven沒有的,在Maven看來,不管你是hosted也好,proxy也好,或者group也好,對(duì)我都是一樣的,我只管根據(jù)groupId,artifactId,version等信息向你要構(gòu)件。為了方便Maven的配置,Nexus能夠?qū)⒍鄠€(gè)倉庫,hosted或者proxy合并成一個(gè)group,這樣,Maven只需要依賴于一個(gè)group,便能使用所有該group包含的倉庫的內(nèi)容。

    Nexus預(yù)定義了“Public Repositories”和“Public Snapshot Repositories”兩個(gè)倉庫組,前者默認(rèn)合并所有預(yù)定義的Release倉庫,后者默認(rèn)合并所有預(yù)定義的Snapshot倉庫。我們?cè)诒疚那懊娴牟糠謩?chuàng)建了一個(gè)名為“Sonatype Repository”的倉庫,現(xiàn)在將其合并到“Public Repositories”中。

    點(diǎn)擊倉庫列表中的“Public Repositories”,然后選擇下方的"Configuration" Tab,在配置面板中,將右邊“Avaiable Repositories”中的“Sonatype Repository”拖拽到左邊的“Ordered Group Repository”中,如圖:

    創(chuàng)建倉庫組和創(chuàng)建proxy及hosted倉庫類似,這里不再贅述。需要注意的是format字段需要填寫“maven2”,添加你感興趣的倉庫即可。

     

    搜索構(gòu)件

    在浩大的Maven倉庫中一下下點(diǎn)擊鏈接,瀏覽路徑以尋找感興趣的構(gòu)件是一件很郁悶的事情。Nexus基于nexus-indexer提供構(gòu)件搜索功能,要想對(duì)倉庫進(jìn)行搜索,無論是hosted,proxy,或者group,你都必須確認(rèn)索引文件存在。這一點(diǎn)對(duì)于代理倉庫尤其重要,有些遠(yuǎn)程倉庫可能根本就沒有索引,所以你無法搜索這些代理倉庫。有些遠(yuǎn)程倉庫的遠(yuǎn)程索引非常大,如中央倉庫達(dá)到了70M左右,那么第一次下載索引需要花很多時(shí)間,所以要期望得到搜索結(jié)果,確保看到如下的文件:

    一旦你的Nexus擁有了本地或者遠(yuǎn)程倉庫的索引文件,你就可以享受Nexus的構(gòu)件搜索功能了。不論登陸與否,你都可以使用關(guān)鍵字進(jìn)行模糊搜索,比如我在左邊導(dǎo)航欄上部的搜索框內(nèi)輸入junit,然后點(diǎn)擊搜索按鈕,右邊立刻會(huì)分頁顯示500多條的junit相關(guān)構(gòu)件信息。如果你了解更多的信息,你也可以通過限定groupId,artifactId,version進(jìn)行搜索,點(diǎn)擊導(dǎo)航欄中的“Advanced Search”,點(diǎn)擊右邊所有頁面左上角的下拉框,選擇“GAV Search”。筆者這里輸入junit:junit:4.4,然后回車:

    選擇一項(xiàng)搜索結(jié)果,在頁面下方會(huì)顯示“Artifact Information”的面板,你可以點(diǎn)擊"artifact"或者"pom"下載對(duì)應(yīng)文件,而該面板右邊更顯示了一個(gè)Maven依賴配置,你可以直接復(fù)制該配置到Maven POM中,這是個(gè)十分方便的特性。

    此外,值得一提的是,Nexus還支持基于classname的搜索,你只需點(diǎn)擊搜索頁面右上角的下拉框,選擇“Classname Search”,然后輸入類名即可,這里我不再贅述。

     

    配置Maven使用Nexus

    默認(rèn)情況下,Maven依賴于中央倉庫,這是為了能讓Maven開箱即用,但僅僅這么做明顯是錯(cuò)誤的,這會(huì)造成大量的時(shí)間及帶寬的浪費(fèi)。既然文章的前面已經(jīng)介紹了如何安裝和配置Nexus,現(xiàn)在我們就要配置Maven來使用本地的Nexus,以節(jié)省時(shí)間和帶寬資源。

    我們可以將Repository配置到POM中,但一般來說這不是很好的做法,原因很簡(jiǎn)單,你需要為所有的Maven項(xiàng)目重復(fù)該配置。因此,這里我將Repository的配置放到$user_home/.m2/settings.xml中:

    Xml代碼 復(fù)制代碼
    1. <settings>  
    2. ...   
    3. <profiles>  
    4.   <profile>  
    5.     <id>dev</id>  
    6.     <repositories>  
    7.       <repository>  
    8.         <id>local-nexus</id>  
    9.         <url>http://127.0.0.1:8080/nexus/content/groups/public/</url>  
    10.         <releases>  
    11.           <enabled>true</enabled>  
    12.         </releases>  
    13.         <snapshots>  
    14.           <enabled>true</enabled>  
    15.         </snapshots>  
    16.       </repository>  
    17.     </repositories>  
    18.   </profile>  
    19. </profiles>  
    20. <activeProfiles>  
    21.   <activeProfile>dev</activeProfile>  
    22. </activeProfiles>  
    23. ...   
    24. </settings>  

    由于我們不能直接在settings.xml中插入<repositories>元素,這里我們編寫了一個(gè)profile,并添加了一個(gè)profile并使用<activeProfile>元素自動(dòng)將這個(gè)profile激活。這里的local-nexus倉庫指向了剛才我們配置的Nexus中“Public Repositories”倉庫組,也就是說,所有該倉庫組包含的倉庫都能供我們使用。此外,我們通過<releases>和<snapshots>元素激活了Maven對(duì)于倉庫所有類型構(gòu)件下載的支持,當(dāng)然你也可以調(diào)節(jié)該配置,比如說禁止Maven從Nexus下載snapshot構(gòu)件。

    使用該配置,Maven就會(huì)從你的Nexus服務(wù)器下載構(gòu)件了,速度和從Central下載可不是一個(gè)數(shù)量級(jí)的。

     

    部署構(gòu)件至Nexus

    Nexus提供了兩種方式來部署構(gòu)件,你可以從UI直接上傳,也可以配置Maven部署構(gòu)件。

     

    通過Nexus UI部署

    有時(shí)候有個(gè)jar文件你無法從公共Maven倉庫找到,但是你能從其它得到這個(gè)jar文件(甚至是POM),那么你完全可以將這個(gè)文件部署到Nexus中,使其成為標(biāo)準(zhǔn)流程的一部分。步驟如下:

    點(diǎn)擊左邊導(dǎo)航欄的"Repository",在右邊的倉庫列表中選擇一個(gè)倉庫,如“3rd Party”,然后會(huì)看到頁面下方有四個(gè)tab,選擇最后一個(gè)“Upload”,你會(huì)看到構(gòu)件上傳界面。選擇你要上傳的構(gòu)件,并指定POM,(或者手工編寫GAV等信息),最后點(diǎn)擊Upload,該構(gòu)件就直接被部署到了Nexus的"3rd Party"倉庫中。如圖:


    通過Maven部署

    更常見的用例是:團(tuán)隊(duì)在開發(fā)一個(gè)項(xiàng)目的各個(gè)模塊,為了讓自己開發(fā)的模塊能夠快速讓其他人使用,你會(huì)想要將snapshot版本的構(gòu)件部署到Maven倉庫中,其他人只需要在POM添加一個(gè)對(duì)于你開發(fā)模塊的依賴,就能隨時(shí)拿到最新的snapshot。

    以下的pom.xml配置和settings.xml能讓你通過Maven自動(dòng)化部署構(gòu)件:

    pom.xml

    Xml代碼 復(fù)制代碼
    1. <project>  
    2. ...   
    3. <distributionManagement>  
    4.   <repository>  
    5.     <id>nexus-releases</id>  
    6.       <name>Nexus Release Repository</name>  
    7.       <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>  
    8.   </repository>  
    9.   <snapshotRepository>  
    10.     <id>nexus-snapshots</id>  
    11.     <name>Nexus Snapshot Repository</name>  
    12.     <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>  
    13.   </snapshotRepository>  
    14. </distributionManagement>  
    15. ...   
    16. </project>  

    settings.xml

    Xml代碼 復(fù)制代碼
    1. <settings>  
    2. ...   
    3. <servers>  
    4.   <server>  
    5.     <id>nexus-releases</id>  
    6.     <username>admin</username>  
    7.     <password>admin123</password>  
    8.   </server>  
    9.   <server>  
    10.     <id>nexus-snapshots</id>  
    11.     <username>admin</username>  
    12.     <password>admin123</password>  
    13.   </server>     
    14. </servers>  
    15. ...   
    16. </settings>  

    這里我們配置所有的snapshot版本構(gòu)件部署到Nexus的Snapshots倉庫中, 所有的release構(gòu)件部署到Nexus的Releases倉庫中。由于部署需要登陸,因?yàn)槲覀冊(cè)趕ettings.xml中配置對(duì)應(yīng)Repository id的用戶名和密碼。

    然后,在項(xiàng)目目錄中執(zhí)行mvn deploy ,你會(huì)看到maven將項(xiàng)目構(gòu)件部署到Nexus中,瀏覽Nexus對(duì)應(yīng)的倉庫,就可以看到剛才部署的構(gòu)件。當(dāng)其他人構(gòu)建其項(xiàng)目時(shí),Maven就會(huì)從Nexus尋找依賴并下載。

     

    總結(jié)

    本文介紹強(qiáng)大的倉庫管理器——Nexus,包括如何下載安裝Nexus,配置Nexus代理中央倉庫,管理Nexus的代理倉庫,本地倉庫,以及倉庫組。并幫助你了解如何通過Nexus搜索構(gòu)件。最后,如何在Maven中配置Nexus倉庫,以及如何部署構(gòu)件到Nexus倉庫中。這些都是Nexus中最基本也是最常用的功能。隨著使用的深入,你會(huì)發(fā)現(xiàn)Nexus還有很多其它的特性,如用戶管理,角色權(quán)限管理等等。

    Nexus的OSS版本是完全開源的,如果你有興趣,你可以學(xué)習(xí)其源碼,甚至自己實(shí)現(xiàn)一個(gè)REST客戶端。

    馬上擁抱Nexus吧,它是免費(fèi)的!

    posted on 2009-03-16 18:51 wang9354 閱讀(2377) 評(píng)論(0)  編輯  收藏

    導(dǎo)航

    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統(tǒng)計(jì)

    常用鏈接

    留言簿(2)

    隨筆檔案

    友情鏈接

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲网站在线观看| 日韩免费福利视频| 亚洲国产成人高清在线观看| 美女的胸又黄又www网站免费| 成人一a毛片免费视频| 国产AV旡码专区亚洲AV苍井空| 中文字幕乱码免费视频| 亚洲六月丁香六月婷婷蜜芽 | 免费一级特黄特色大片| 国产美女无遮挡免费视频| 男女超爽视频免费播放| 亚洲电影日韩精品| 国产精品黄页免费高清在线观看| 亚洲麻豆精品国偷自产在线91| 久久久WWW免费人成精品| 亚洲美女又黄又爽在线观看| 国色精品va在线观看免费视频| 亚洲欧洲日产国码久在线观看| 五月婷婷在线免费观看| 一本天堂ⅴ无码亚洲道久久| 四虎免费永久在线播放| 两个人日本免费完整版在线观看1| 亚洲中文字幕无码不卡电影| 日韩精品在线免费观看| 中国黄色免费网站| 亚洲国产第一页www| 精品久久久久成人码免费动漫 | 香蕉视频在线观看免费国产婷婷| 朝桐光亚洲专区在线中文字幕 | 最近2019免费中文字幕视频三| 亚洲人色大成年网站在线观看| 精品国产一区二区三区免费看| xxxxx做受大片在线观看免费| 亚洲AV本道一区二区三区四区| 青青青免费国产在线视频小草| 国产精品亚洲一区二区三区| 久久久久久亚洲精品不卡| 日本zzzzwww大片免费| 黄色大片免费网站| 亚洲高清资源在线观看| 免费乱码中文字幕网站|