首頁  >  文章  >  Java  >  使用nexus搭建區域網路私服

使用nexus搭建區域網路私服

零下一度
零下一度原創
2017-07-23 15:00:282838瀏覽

使用nexus搭建區域網路私服

一. 認識maven倉庫

1.1 maven倉庫的作用

  回想之前不用maven的時候,我們用eclipse原始的專案骨架在建置專案時,在工程目錄下往往有一個lib資料夾用來存放工程所需jar文件,每次建造一個新工程時都會有這樣一個lib資料夾。然後將jar複製進lib資料夾配置路徑,很顯然有大量的重複工作,而且不同專案所用jar包不盡相同,需要我們慢慢去分辨。而後我們用了專案管理工具例如svn或是git,我們需要把大量的jar檔案引入程式碼庫,這也不是一件很適合的事。
  而maven能夠幫我們解決這些問題,maven倉庫是專門用來存放jar檔案的位置(也可以用來存放項目war,zip,pom等文件)。 maven倉庫中為每個jar檔案分配了一個座標,例如jstl的jar套件:

<groupid>javax.servlet</groupid>        组ID
<artifactid>jstl</artifactid>           构建ID
...  其余属性后续介绍

這樣做的話,maven能很方便的進行專案依賴版本的控制。簡單說maven倉庫就是幫我們統一管理專案構件。

1.2 maven倉庫分類

使用nexus搭建區域網路私服
  專案建置的查詢路徑:先查詢本地倉庫,找不到就會查詢中央倉庫,沒找到就會報錯。中央倉庫位址有:

  1. 私服nexus用

  2. #推薦使用

  3. ##上面三個是較為常見的,也是專案中使用較多的,但是由於下載速度太慢,且倉庫的jar檔案不完整,實際企業開發需要我們搭建私服倉庫。

    二. 安裝使用nexus

      這裡注意搭建maven私服不只這一種工具。博主用的版本是nexus-2.12.0。


  4. 點擊下載,密碼:1ar1

  5. 下載完成後解壓縮即可,解壓縮完成到目錄nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin\jsw下可以看到:

    使用nexus搭建區域網路私服

  6. #部落客電腦是64位元所以開啟最後一個資料夾:


    使用nexus搭建區域網路私服

  7. # 點選第二個bat檔設定為windows服務,開啟nexus後造訪網址: http: //localhost:8081/nexus/啟動後開啟如下頁面,即代表nexus安裝並啟動成功。

    使用nexus搭建區域網路私服

    三. 設定maven私服

  8. #點選右上角Login登陸,初始帳號為admin,密碼是admin123 登陸成功可修改帳號密碼,自己找。

  9. 點擊左邊的導覽Respositories
    使用nexus搭建區域網路私服

可以看到預設有一些倉庫,倉庫類型Type的意義:

  • hosted 宿主倉庫,用來發布一些第三方不允許的元件,例如oracle驅動程式等商業軟體的jar包

  • proxy 代理遠端的倉庫,例如上面寫得三個maven遠端倉庫。如果本機不存在某些jar檔時就會到這些代理站點去下載。

  • releases 內部的模組中release模組的發佈倉庫

  • snapshots 發佈內部的snapshot模組的倉庫

  • #3rd party 第三方依賴的倉庫,本地上傳jar套件後使用

  • group 群組倉庫,用來新增其他的倉庫,方便開發人員設定

開始搭建私服倉庫,值得注意的是:maven專案索引:maven專案索引就是用來方便在私服網站尋找相關依賴建置的功能。所以在搭建私服之前,應該下載maven索引,大概幾十M:


使用nexus搭建區域網路私服

將Download Remote Indexs屬性改成True,然後點擊save即可,可以在選單列Scheduled Tasks查看下載索引的進度。

3.
新增自己代理程式的遠端庫,有時候我們的專案需要引進一些特殊的jar文件,例如Jboss的某些jar包,這時候也可以在私服中代理該遠端倉庫:
使用nexus搭建區域網路私服

點擊add後加入代理類型,依序填寫id,name和url,這樣的話,在專案中

不再需要設定遠端倉庫:

<repository>
    <id>jboss</id>
    <name>JBoss Repository</name>
    <url>;/url>
    <releases>
        <updatepolicy>daily</updatepolicy><!-- never,always,interval n -->
        <enabled>true</enabled>
        <checksumpolicy>warn</checksumpolicy><!-- fail,ignore -->
    </releases>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <layout>default</layout>
</url></repository>

4.使用nexus搭建區域網路私服的使用,上面提到的一些特殊的商业性质相关的jar文件,比如oracle的驱动包,ojdbc.jar并不支持远程下载,这时候可以将我们本地下载好的jar包上传到私服。
使用nexus搭建區域網路私服

注意GAV设置要与你pom.xml中一致,上传后添加到Artifacts点击上传即可:
使用nexus搭建區域網路私服2
5.由于私服仓库数量过多,导致配置复杂度提高,所以需要用到上述的group类型仓库:
使用nexus搭建區域網路私服

切记点击刷新,刷新后点击唯一的一个group仓库,点击配置Configuration就可以看到刚才我们手动添加的代理仓库,然后将代理仓库添加到组仓库,这样依赖,项目中之需要配置组仓库的url就可以访问多个私服仓库。

四. 局域网使用maven私服

4.1 单个项目使用maven私服

在上述步骤完成后,即可在项目中引用私服,pom.xml中改变默认下载仓库url:
指定私服仓库,我的ip是170,不要全盘复制

<repositories>  
    <repository>  
        <id>nexus</id>  
        <name>nexus</name>  
        <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
        <releases>  
            <enabled>true</enabled>  
        </releases>  
        <snapshots>  
            <enabled>true</enabled>  
        </snapshots>  
    </repository>  
</repositories>

指定插件仓库

<pluginrepositories>  
    <pluginrepository>  
        <id>nexus</id>  
        <name>nexus</name>  
        <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
        <releases>  
            <enabled>true</enabled>  
        </releases>  
        <snapshots>  
            <enabled>true</enabled>  
        </snapshots>  
    </pluginrepository>  
</pluginrepositories>

配置好之后就可以从私服下载依赖包了。但是这种方式只能在改项目中起作用,每次配置项目都需要写两遍,为了将懒人模式进行到底,我们还可以指定全局的私有仓库。

4.2 全局指定私服

找到maven文件的中的使用nexus搭建區域網路私服文件
使用nexus搭建區域網路私服

在使用nexus搭建區域網路私服中添加配置:
在profiles>标签下添加

<profile>
    <repositories>
        <id>central</id>
        <name>central</name>
        <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>
        <layout>default</layout>
        <releases>
            <enabled>true<enabled>
        </enabled></enabled></releases>
        <snapshots>
            <enabled>true<enabled>
        </enabled></enabled></snapshots>
    </repositories>
</profile>

配置好之后激活profile

<activeprofiles>  
    <activeprofile>central</activeprofile>  
</activeprofiles>

这样一来,这台电脑上所有maven项目下载jar文件时都会先访问局域网170的电脑。

-----------------------------------windows配置私服完毕-----------------------------------

扩展:setting,xml中各标签的意义

  1. servers(服务器)

<servers>
    <server>
        <id>server001</id>
        <username>my_login</username>
        <password>my_password</password>
        <privatekey>${usr.home}/.ssh/id_dsa</privatekey>
        <passphrase>some_passphrase</passphrase>
        <filepermissions>664</filepermissions>
        <directorypermissions>775</directorypermissions>
        <configuration></configuration>
    </server>
</servers>

id与pom.xml中distributionManagement的id保持一致,服务器标识
username和password表示服务器认证需要的用户民和密码
privateKey, passphrase一组密钥 (不常用)
filePermissions, directoryPermissions如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(不常用)

2.mirrors(镜像)

<mirrors>
    <mirror>
        <id>planetmirror.com</id>
        <name>PlanetMirror Australia</name>
        <url>;/url>
        <mirrorof>central</mirrorof>
    </url></mirror>
</mirrors>

设置一个中央仓库的镜像,看仓库分类,也是远程仓库的一种配置方式。

3.profiles(构建环境)
这个可能比较难理解,maven权威指南一书中这样说:

  Profile能让你为一个特殊的环境自定义一个特殊的构建;
  构建环境的两个例子是产品环境和开发环境。当你在开发环境中工作时,你的系统可能被配置成访问运行在你本机的开发数据库实例,而在产品环境中,你的系统被配置成从产品数据库读取数据。Maven能让你定义任意数量的构建环境(构建profile),这些定义可以覆盖pom.xml中的任何配置。

简单理解就是你可以先profile中先构件好项目运行的环境,比如预设了A环境实在开发中使用,而实际上线是B环境,那么在上线的时候我们不需要一个个修改pom.xml中的配置,只需要激活改profile即可。

4.activation(激活构建环境 )

<activation>
    <activebydefault>false</activebydefault>
    <jdk>1.5</jdk>
    <os>
        <name>Windows XP</name>
        <family>Windows</family>
        <arch>x86</arch>
        <version>5.1.2600</version>
    </os>
    <property>
        <name>mavenVersion</name>
        <value>2.0.3</value>
    </property>
</activation>

指定profile中配置的环境在什么时候开始生效

5.activeProfiles(激活了的profile)

<activeprofiles>
<activeprofile>env-test</activeprofile>
</activeprofiles>

在使用nexus搭建區域網路私服最后的一个标签,表示env-test这个profile已被激活

以上是使用nexus搭建區域網路私服的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn