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

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

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

    qileilove

    blog已經(jīng)轉移至github,大家請訪問 http://qaseven.github.io/

    Nexus搭建私服

    Nexus搭建私服

     

    首先介紹一下背景,公司訪問外網(wǎng)有限制,項目組大部分人員不能訪問maven的central repository,因此在局域網(wǎng)里找一臺有外網(wǎng)權限的機器,搭建nexus私服,然后開發(fā)人員連到這臺私服上 

    環(huán)境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32 

    一、用admin用戶登陸nexus 

    nexus的下載和安裝都很簡單,網(wǎng)上也有很多介紹,本文就不重復了。主要介紹一下安裝之后的配置 

    nexus的配置需要用admin角色完成,默認的密碼是admin123,進入nexus首頁之后,點擊右上角,進行登錄 



    然后就可以在左邊的菜單中進行配置了 



    二、為nexus配置代理服務器 

    由于這臺機器需要通過代理才能訪問外網(wǎng),所以首先要配置代理服務器,在Administration-->Server中進行配置 



    配置之后,nexus才能連上central repository,如果私服所在機器可以直接上外網(wǎng),則可以省略這一步 

    三、配置repository 

    在Views/Repositories-->Repositories里進行配置 



    nexus里可以配置3種類型的倉庫,分別是proxy、hosted、group 

    proxy是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫 下載,然后返回給用戶,相當于起到一個中轉的作用 

    hosted是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted里。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted里 

    group是倉庫組,在maven里沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統(tǒng)一的地址,這樣用戶就不需要在pom中配置多個地址,只要統(tǒng)一配置group的地址就可以了 

    nexus裝好之后,已經(jīng)初始化定義了一些repository,我們熟悉之后,就可以自行刪除、新增、編輯 

    右邊那個Repository Path可以點擊進去,看到倉庫中artifact列表。不過要注意瀏覽器緩存。我今天就發(fā)現(xiàn),明明構件已經(jīng)更新了,在瀏覽器里卻看不到,還以為是BUG,其實是被瀏覽器緩存了 

    四、配置Central Repository的proxy 

    最關鍵的一個配置,可能就是Central Repository的proxy配置,因為大部分的構件,都是要通過這個proxy得到的 



    在安裝完nexus之后,這個proxy是預置的,需要做的就是把Download Remote Indexes改為true,這樣nexus才會從central repository下載索引,才能在nexus中使用artifact search的功能 

    網(wǎng)絡上有一些其他公開的maven倉庫,可以用同樣的辦法,在nexus中設置proxy,但是并不是所有maven倉庫,都提供了nexus index,這種情況下,就無法建立索引了 

    五、配置hosted repository 

    一般會配置3個hosted repository,分別是3rd party、Snapshots、Releases,分別用來保存第三方jar(典型的比如ojdbc6.jar),項目組內部的快照、項目組內部的發(fā)布版 



    這里并沒有什么特別的配置,只是Deployment Policy這個選項,一般Snapshots會配置成允許,而Releases和3rd party會設置為禁止 

    六、配置group repository 

    前面說過,group其實是一個虛擬的倉庫,通過對實體倉庫(proxy、hosted)進行聚合,對外暴露一個統(tǒng)一的地址 



    這里要注意的是,放到左邊的倉庫,才是會被聚合的倉庫。我昨天一直搞錯了,把倉庫都放到右邊,結果group什么都沒有聚合到,是一個空的倉庫。。。 

    七、配置用戶密碼 

    在Security-->Users中配置,在deployment用戶上點擊右鍵,選擇Set Password,然后設置一個密碼,做這個操作是為了后面提交做準備 



    八、在用戶機器上配置settings.xml 

    經(jīng)過前面的7個步驟,nexus就配置好了,接下來需要在每個開發(fā)人員的開發(fā)機器上進行配置了 

    配置文件在%USER_HOME%/.m2/settings.xml 

    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">  

       

      <servers>  

        

        <server>  

    10         <id>nexus-snapshots</id>  

    11         <username>deployment</username>  

    12         <password>deployment</password>  

    13     </server>  

    14   

    15   </servers>  

    16     

    17   <mirrors>  

    18     

    19     <mirror>  

    20         <id>nexus</id>  

    21         <name>internal nexus repository</name>  

    22         <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>  

    23         <mirrorOf>central</mirrorOf>  

    24     </mirror>  

    25       

    26   </mirrors>  

    27     

    28 </settings>  


    這里只配置了2個元素<mirrors>和<servers> 

    首先這里配置了一個id為nexus的鏡像倉庫,地址是前面配置的public group的URL,然后鏡像目標是central 

    maven里的超級pom,里面配置了這樣一段: 

    Xml代碼  

    29 <repositories>  

    30     <repository>  

    31       <id>central</id>  

    32       <name>Central Repository</name>  

    33       <url>http://repo.maven.apache.org/maven2</url>  

    34       <layout>default</layout>  

    35       <snapshots>  

    36         <enabled>false</enabled>  

    37       </snapshots>  

    38     </repository>  

    39   </repositories>  

    40   

    41   <pluginRepositories>  

    42     <pluginRepository>  

    43       <id>central</id>  

    44       <name>Central Repository</name>  

    45       <url>http://repo.maven.apache.org/maven2</url>  

    46       <layout>default</layout>  

    47       <snapshots>  

    48         <enabled>false</enabled>  

    49       </snapshots>  

    50       <releases>  

    51         <updatePolicy>never</updatePolicy>  

    52       </releases>  

    53     </pluginRepository>  

    54   </pluginRepositories>  


    因此,當本地的maven項目,找不到需要的構件(包括jar包和插件)的時候,默認會到central里獲取 

    所以我們剛剛配置的鏡像倉庫,id也是central,這樣本地maven項目對central repository的請求,就會轉到鏡像倉庫上,也就是我們設置的nexus私服上 

    由于我們在項目的pom里,不會再配置其他的<repositories>和<pluginRepositories> 元素,所以只要配置一個central的mirror,就足以阻止所有的外網(wǎng)訪問。如果pom中還配置了其他的外網(wǎng)倉庫,比如jboss repository等,可以把<mirrorOf>改為* 

    至于<servers>元素,是因為我們把項目內部的構件上傳到nexus的倉庫中時,nexus會進行權限控制,所以這里需要設置 權限相關的信息。注意這里的<id>nexus-snapshots</id>,和后面maven工程里的pom設置是一致的 

    由于我們這里已經(jīng)屏蔽了對外網(wǎng)倉庫的請求,所以就不需要配置代理服務器了,如果需要配置代理服務器,可以用<proxies>元素 

    九、配置maven項目的pom文件 

    下面是簡化后的pom文件: 

    Xml代碼  

    55 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    56     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  

    57   

    58     <modelVersion>4.0.0</modelVersion>  

    59     <groupId>com.huawei.inoc.wfm.task</groupId>  

    60     <artifactId>task-sla</artifactId>  

    61     <version>0.0.1-SNAPSHOT</version>  

    62     <name>task-sla</name>  

    63   

    64     <!-- 配置部署的遠程倉庫 -->  

    65     <distributionManagement>  

    66         <snapshotRepository>  

    67             <id>nexus-snapshots</id>  

    68             <name>nexus distribution snapshot repository</name>  

    69             <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>  

    70         </snapshotRepository>  

    71     </distributionManagement>  

    72   

    73 </project>  


    這里配置了<distributionManagement>元素,其中的<id>nexus-snapshots</id>,與前面說的settings.xml中的<servers>元素中的配置必須一致 

    配置這個的目的,是當執(zhí)行maven deploy時,才知道要將生成的構件部署到哪個遠程倉庫上,注意這里的URL填的就不是public group的地址: 
    http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/ 

    而是snapshots的地址: 
    http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/ 

    但是在nexus中,snapshots也是聚合到public group里的,所以開發(fā)人員A提交到snapshots的構件,開發(fā)人員B也可以從public group里獲取到 

    十、eclipse中的設置 

    經(jīng)過前面的配置,已經(jīng)可以通過命令行進行maven操作了。不過實際開發(fā)中,一般都是使用eclipse的m2e插件,所以還需要對eclipse進行一些額外的配置 

    在Preferences-->Maven-->User Settings中,點擊Update Settings,加載剛才我們對settings.xml的更改 



    然后在Maven Repositories視圖里,可以看到倉庫的情況 



    可以看到,從超級pom繼承來的central被置灰了,不可用,后面的mirrored by nexus表示對該倉庫的所有請求,都會轉到鏡像nexus中 

    十一、nexus的目錄結構 

    nexus會安裝在%USER_HOME%/sonatype-work/nexus下,有以下目錄 



    其中的storage目錄,就是構件實際存放的地址了 

    posted on 2014-03-26 13:19 順其自然EVO 閱讀(1139) 評論(0)  編輯  收藏 所屬分類: maven

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费在线看片网站| 亚洲人成网站影音先锋播放| 两性色午夜视频免费网| 久久亚洲AV成人出白浆无码国产| 国产成人A在线观看视频免费| 特级毛片在线大全免费播放| 亚洲三级电影网站| 亚洲A丁香五香天堂网| 67194成手机免费观看| sihu国产精品永久免费| 亚洲中文字幕久久精品无码2021| 亚洲精品网站在线观看不卡无广告| 91青青国产在线观看免费| 黄色一级毛片免费| 亚洲短视频在线观看| 国产亚洲一区二区三区在线不卡 | 一级毛片**免费看试看20分钟 | 亚洲a级成人片在线观看| 亚洲中文字幕丝袜制服一区| 国产精品无码免费播放| 99久久免费中文字幕精品| 一级毛片免费观看不收费| 亚洲综合色7777情网站777| 国产亚洲婷婷香蕉久久精品 | 伊人久久亚洲综合影院首页| 亚洲VA中文字幕不卡无码| 亚洲av区一区二区三| 成人毛片18女人毛片免费96| 久久永久免费人妻精品下载| 一级特黄录像视频免费| 亚洲AV日韩AV永久无码色欲| 亚洲同性男gay网站在线观看| 国产亚洲精品a在线观看app| 亚洲性在线看高清h片| 日本免费一区尤物| 丁香花在线观看免费观看| 四虎免费影院ww4164h| 全部免费毛片在线播放| 在线人成免费视频69国产 | 日本人护士免费xxxx视频| 最近最好的中文字幕2019免费|