Nexus安装及搭建配置

时间:2024-03-16 22:43:29

1、Nexus安装(Linux)

1.1下载Nexus,地址:http://www.sonatype.org/nexus/go

1.2 解压安装包并启动

    tar -zxvf nexus-x.xx.x-unix.tar.gz

    进入bin目录,执行 ./nexux start 命令启动

Nexus安装及搭建配置

启动起来后,通过浏览器访问http://ip:8081就可以访问了。界面如下所示:

Nexus安装及搭建配置

1.3Repositories 则用来配置远程资源和本地资源,

   其中支持Proxy类型资源,表示远程资源的镜像,

   host类型的资源表示本地资源,用于保存第三方资源或团队内部共享的资源等

   group类型资源是组,可以将多个proxy或host类型的资源构建成一个组,供Maven使用等

注意事项:

1、类似于Nexus 2的远程资源保存路径配置,在Nexus 3中进行了分组管理

2.  Nexus 2 能够支持资源信息的拷贝,提供xml格式,而Nexus 3 暂时还不支持该xml格式拷贝。

3.  Nexus 2 能够下载远程的索引到本地,供搜索查询使用,但是Nexus 3 暂时还不支持,在Nexus 3 中查询的都是已经有请求该镜像库的资源,对于未从该镜像库下载过的资源是无法查询到的。那么在Nexus 3 搭建初期,没有使用前,在该系统是查询不到任何资源的,需要先使用程序去调用该镜像,才会有资源使用。

4.  Nexus 3 暂时不支持下载远程镜像的索引。只有当Maven中设置了Nexus 3 的资源库,Nexus 3 会在具体编译项目的时候先从远程下载对应的资源到本地,然后传输给各个客户端使用。 这样也就不用跟Nexus 2 中那样再【Repair Index】来更新索引了。

2、配置搭建Nexus

 2.1 Nexus 启用上传功能

    团队有了私有的镜像服务器以后,团队内部代码的依赖也就不再需要源码依赖了,大家可以通过发布不同版本的jar到nexus镜像上来供调用者直接通过Maven下载使用,这样不同研发人员直接的依赖也就没有那么强了,大家可以基于已经发布的版本进行各自的开发。

那么如何发布个人的jar资源到团队内部镜像上呢? 

    1、新建一个Snapshot仓库(snapshot快照库和release发布库)

    1.1 snapshot快照仓库用于保存开发过程中的不稳定版本(新建时选择此类型)

    Nexus安装及搭建配置

    1.2release正式仓库则是用来保存稳定的发行版本。部署此版本会出现400错误


  2. 在Nexus 中创建一个gaomy的角色,拥有的权利为【nx-repository-view-maven2-*-edit】和【nx-repository-view-maven2-*-add】权利,如果该角色将来可能还有nuget,npm相关上传权利,则将其权利改为【nx-repository-view-*-*-edit】和【nx-repository-view-*-*-add】权利。

  3. 创建用户,用户拥有的角色为【nx-anonymous】和刚创建的【developer】角色。其中nx-anonymous角色是nexus默认自带的角色。

  4. 在.m2文件夹下的settings.xml配置文件中增加<servers>的配置。

<servers>
        <server>
            <id>menu</id> /**这里的id需要与pom文件distributionManagement中一致,为仓库名称**/
            <username>gaomy</username>
            <password>admin123</password>
        </server>

    </servers>


     <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://192.168.242.129:8081/repository/maven-public/</url> /**(镜像地址)**/
    </mirror>
  </mirrors>

    <profiles>
    <profile>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>menu</id>
          <name>Nexus Public Repository</name>
          <url>http://192.168.242.129:8081/repository/menu/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>

 4.  在需要上传jar资源的项目的pom.xml中增加<distributionManagement>配置,其中<id>设置需要跟.m2文件夹下的settings.xml中<servers>下的id相同。<url>需要指定nexus中配置的hosts Repository资源的地址。放到setting中不起作用,以后可以放到父pom文件中

<distributionManagement>
        <repository>
            <id>server_id</id>
            <name>Nexus Release Repository</name>
            <url>http://nexus_ip:8081/repository/host-releases/</url>
        </repository>
    </distributionManagement>


 四、Nexus 启用SNAPSHOTS

  团队内部在开发过程中为了相互可以互不影响的开发,需要时常将未稳定版的jar发布出来供团队其他人员调用,这时候建议使用SNAPSHOT版本,那么SNAPSHOT版本怎么发布到Nexus上呢。如果以当前的配置,发布SNAPSHOT过程会失败,因为Nexus默认是不启用SNAPSHOT的。那么怎么启用SNAPSHOT及如何上传SNAPSHOT版本资源呢?

  启用SNAPSHOT的方式为在.m2文件夹下的settings.xml中增加<profile>设置

<!-- 这个默认配置决定了我们的Maven服务器开启snapshot配置,否则不能下载SNAPSHOTS的相关资源 --> 
 <profiles>
    <profile>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>menu</id>
          <name>Nexus Public Repository</name>
          <url>http://192.168.242.129:8081/repository/menu/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>


五 常见错误:

1、Return code is: 401, ReasonPhrase:Unauthorized

解决:

   1.1是否是新增仓库的用户名、密码

    1.2 setting文件是否生效,路径是否正确

    1.3 setting中server的id和pom中distributionManagement中id是否一致