首页 > 代码库 > 搭建Maven私服

搭建Maven私服

为什么要搭建Maven私服?

  (1)有些公司不允许开发人员使用外网,于是我们需要搭建一个maven的服务器我们使用。

  (2)公司自己搭建私服,jar会下载到公司的服务器上,这样既节省了网络带宽也会加速项目搭建的进程。

 

这里是用Nexus来搭建Maven服务器

 

1.下载Nexus

  下载地址:http://www.sonatype.org/nexus/  打开以后,进行如下操作:

  技术分享

 

  点击红色标记部分,进入下载界面,选择对应的服务器系统版本进行下载

  下载完后nexus.zip文件后,解压自己想放置的文件目录(最好不要有中文目录)。

2.启动Nexus

  解压后的文件出现了两个文件夹:

    --nexus-2.14.3-02

    --sonatype-work

  进入到 nexus-2.14.3-02\bin\jsw,会看到很多带有系统的文件夹,选择对应的服务器系统,进入对应的文件下,这里我选择进入:windows-x86-64,界面如下:

  技术分享

  这里可以选择 console-nexus.bat来选择启动nexus,不过会保留黑窗口;

  也可以选择install-nexus.bat将nexus设置为windows时的服务,然后启动start-nexus.bat,等待一下后就开启了nexus服务,这样服务器重启时也会重启该服务(推荐)

 

  然后在游览器中输入http://127.0.0.1:8081/nexus/,出现如下图所示就代表nexus已经启动成功。

  技术分享

    点击右上角的Log In 会弹出一个登录框

    输入Username: admin

      Password:admin123

    点击登录,便可以登录成功。

3.设置Nexus

  (1)登录成功后,点击左侧的Views/Repositories下的Repositoies,界面如下:

        PublicRepositories:  仓库组

                  3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库(例如数据库的驱动包)

                  Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库

                  Central: 用来代理maven中央仓库中发布版本构件的仓库

                  Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库

                  Releases: 用来部署管理内部的发布版本构件的宿主类型仓库

                  Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

    技术分享

  

    新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。

   点击Central,下面会出现相关的Central相关的信息,点击Configuraion,将其中Download Remote Indexs由false改成true,最后点击下方的保存。

   同理,Apache Snapshots也需要将Download Remote Indexs由false改成true,最后点击下方的保存。

   

  (2)开始下载这个代理仓库的索引

    将Download Remote Index设置成true后,分别右击Central和Apache Snapshots,如下所示:

 

    技术分享

 

    点击Repair Index,就开始下载整个代理库的索引(索引很大,需要下载的时间很长,请耐心等待)

    下载完成标志: 点击一个代理库,比如Central,查看下方的Browse Index,下图所示:

    如果点击Refresh,会出现Central目录,且里面有很多目录,表示下载完成。否则请耐心等待下载。

    技术分享

 

  (3)使用仓库组Gourp

     Nexus 中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,

     我只管根据 groupId,artifactId,version等信息向你要构件。为了方便Maven的配置,Nexus能够将多个仓库,hosted或者

     proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。

   

     Nexus默认自带了一个名为“Public Repositories”组,点击该组可以对他保护的仓库进行调整,如下所示:

     点击Public Repositories->点击Configuration->将Available Repositories中可用的库移动到左边->点击保存。

    技术分享

 

4.如何添加第三方Jar包(以数据库驱动包为例)

  按下面三张图片的设置过后,就在第三方库中拥有了这个jar包,就可以根据搜索该jar包进行导入。

  技术分享

  技术分享

  技术分享

 

5.设置Maven指向我们的Nexus私服

  在设置maven的配置文件时,其内容如下:

  至于为什么这么配置,我也不是很清楚。这样配置以后,你在maven项目导包时,会首先检测本地有没有,有则本地导入,没有则从我们搭建的服务器上导入,

  如果私服上也没有,则私服会从apache的中央仓库下载到私服,再从私服导入,渐渐的私服上基本上都有公司常用的jar包。

<?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">
    
    <pluginGroups>
    </pluginGroups>

    <proxies>
    </proxies>

    <servers>
        <server>    
            <id>nexus-user</id>    
            <username>admin</username>    
            <password>admin123</password>    
        </server>      
    </servers>

    <mirrors>
        <mirror>
            <id>nexus-public</id>
            <mirrorOf>*</mirrorOf><!-- 这里的地址是服务器的地址 -->
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
    
    <profiles>
          
        <profile> 

            <id>nexus</id>    
            <repositories>    
                <repository>    
                    <id>nexus1</id><!-- 这里的地址是服务器的地址 -->  
                    <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>    
                    <releases><enabled>true</enabled></releases>    
                    <snapshots><enabled>true</enabled></snapshots>    
                </repository> 
            </repositories>     
                
           <pluginRepositories>    
                <pluginRepository>    
                    <id>nexus2</id> <!-- 这里的地址是服务器地址 -->   
                     <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>    
                     <releases><enabled>true</enabled></releases>    
                     <snapshots><enabled>true</enabled></snapshots>    
                </pluginRepository>    
            </pluginRepositories>    
        </profile> 
          
    </profiles>

    <activeProfiles>
         <activeProfile>nexus</activeProfile> 
    </activeProfiles>

</settings>

 

 

 

 

 

 

 

 

  

  

搭建Maven私服