搭建自己的maven服务器非常适合于团队开发,除了加快访问maven官网的速度,还可以聚合maven仓库、发布自己的私有jar包。常用的私服项目有:Nexus、Achiva、Artifactory等。下面使用nexus演示,本部分内容来自于《maven实战》。

首先从官网下载得到得到nexus-latest-bundle.zip文件,然后解压到任意一个目录,nexus是跨平台的,linux和windows均可。

nexus的默认监听端口是8081,如果要修改,直接修改conf/nexus.properties文件,改成其他端口。启动:

./nexus start

配置使用该私服

nexus默认就创建了几个默认的仓库,最好用的就是聚合仓库public了,它是按照Releases、Snapshots、3rd party、Central的顺序来聚合的,前面3个都是nexus上存放的,如果找不到,再去中央仓库找。

修改本地.m2/settings.xml文件,修改mirrors部分为下面内容:

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>nexus server</name>
      <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

管理nexus私服

访问:http://127.0.0.1:8081/nexus/content/repositories/浏览nexus上面的所有maven仓库。

访问:http://127.0.0.1:8081/nexus/,然后使用默认用户名密码admin/admin123登录系统。常用功能有:

1)查看仓库列表,可以配置hosted类型的仓库,这种仓库的内容由nexus来保存。可以配置proxy类型的仓库,它只代理其他仓库。可以配置group聚合仓库,内容由多个有顺序的仓库聚合而成。

2)搜索、下载、上传jar包。

对于上传jar包的源码包到nexus上,只需要同时把test-0.0.2.jartest-0.0.2-sources.jar同时上传到nexus就可以了。

配置项目deploy到的仓库

指定deploy的配置只能写在项目的pom.xml文件中(和并列同级):

    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Nexus Release Repository</name>
            <url>http://11.11.11.11:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>11.11.11.11:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

同时.m2/settings.xml文件要配置:

    <server>
            <id>
                releases
            </id>
            <username>
                admin
            </username>
            <password>
                 admin123
            </password>
        </server>
        <server>
            <id>
                snapshots
            </id>
            <username>
                admin
            </username>
            <password>
                admin123
            </password>
        </server>

        <server>
            <id>
                thirdparty
            </id>
            <username>
                admin    
            </username>
            <password>
               admin123
            </password>
        </server>
  </servers>
  <!-- 还有一个profiles标签,不知道有没有用 -->

只deploy当前pom目录的项目

有时候例如我只想部署pom类型的maven,那么只需要加上-N

常见问题

  1. 默认情况下,Neuxs私服不允许release仓库重复部署覆盖已有的包。如果这个限制被打开,可以这样来关闭:选择仓库,在Configuration中的Deployment Policy,选中Disable Redeploy
文档更新时间: 2019-04-02 14:55   作者:nick