Nexus3安装

1.Nexus3下载

wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.6.0-02-unix.tar.gz

tar xzvf nexus-3.6.0-02-unix.tar.gz

2.启动

cd nexus-3.6.0-02/bin
#前台启动服务
./nexus run
#在后台启动服务,不在界面上打印任何启动或者运行时信息
./nexus start
#关闭服务
./nexus stop
#查看nexus运行状态
./nexus status
#重启服务
./nexus restart
#强制重载一遍配置文件,而后重启服务
./nexus force-reload

3.访问http://localhost:8081

默认用户admin,密码admin123html

4. Nexus的仓库与仓库组

4.1 仓库类型

  1. maven-central:宿主仓库主要用于存放项目部署的构件、或者第三方构件用于提供下载。
  2. proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件而后缓存在Nexus仓库中.
  3. group(仓库组):对咱们已经配置完的仓库的一种组合策略。

4.2 默认仓库

  1. maven-central:代理中央仓库、策略为Release、只会下载和缓存中央仓库中的发布版本构件。
  2. maven-releases:策略为Release的宿主仓库、用来部署组织内部的发布版本内容。
  3. maven-snapshots:策略为Snapshot的宿主仓库、用来部署组织内部的快照版本内容。
  4. maven-public:该仓库组将maven-central,maven-releases与maven-snapshots仓库聚合并经过一致的地址提供服务。
  5. nuget-hosted:用来部署nuget构件的宿主仓库
  6. nuget.org-proxy:代理nuget远程仓库,下载和缓冲nuget构件。
  7. nuget-group:该仓库组将nuget-hosted与nuget.org-proxy仓库聚合并经过一致的地址提供服务。

5. 配置Maven从Nexus下载构件

    咱们能够在项目的POM中配置仓库和插件仓库,固然若是咱们想要全部的Maven项目都使用私服,能够在settings.xml中配置,可是settings.xml并不直接支持配置repositories和pluginRepositories,可是Maven提供了profiles下的profile可让咱们定义一系列的配置信息,而后指定其激活条件,可以定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对能够在pom.xml中使用,这里咱们配置远程仓库的地址和插件仓库。缓存

<profiles>
    <profile>
        <id>gpcmarket</id> 
        <repositories> 
            <repository> 
                <id>gpcmarket</id> 
                <name>gpcmarket private nexus</name> 
                <url>http://ip:port/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases> 
                <snapshots>
                    <enabled>true</enabled>
                </snapshots> 
            </repository>
        </repositories> 
        <pluginRepositories> 
            <pluginRepository> 
                <id>gpcmarket</id> 
                <name>gpcmarket private nexus</name> 
                <url>http://ip:port/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases> 
                <snapshots>
                    <enabled>true</enabled>
                </snapshots> 
            </pluginRepository> 
        </pluginRepositories> 
    </profile>
    <profile>  
        <id>jdk-1.8</id>  
        <activation>  
            <activeByDefault>true</activeByDefault>  
            <jdk>1.8</jdk>  
        </activation>  
        <properties>  
            <maven.compiler.source>1.8</maven.compiler.source>  
            <maven.compiler.target>1.8</maven.compiler.target>  
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>  
        </properties>  
    </profile>
</profiles>
<activeProfiles>
<activeProfile>gpcmarket</activeProfile>
</activeProfiles>

可是Maven除了从Nexus上下载构件以外,还会时不时从中央仓库下载构件,然而这应该是Nexus的工做,因此咱们须要配置一个镜像,用<mirrorof>*</mirrorof>将Maven任何构件下载的请求都转发到私服中。安全

<mirrors>
    <mirror>
      <id>gpcmarket-public</id>
      <name>gpcmarket-public</name>
      <url>http://ip:port/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>        
    </mirror>
</mirrors>

这里就有一个问题,在这里配置了镜像,那在<profiles>里配置的远程仓库不是没有用了吗?当Maven须要下载发布版或者快照版构件的时候,他会首先检查咱们配置的远程仓库中的<releases>和<snapshots>元素,看该类型的构件是否能够下载,若是能够下载,就转到镜像地址去下载。因此咱们配置的远程仓库中的<url>失效了,有效的是<releases>和<snapshots>元素。bash

6. 使用Maven部署构件到Nexus

在项目正常开发中,快照版本的构件能够部署到Nexus中策略为Snapshot的例如:maven-snapshots宿主仓库中,发布版本能够部署到Nexus中策略为Release的例如:maven-releases宿主仓库中,项目的POM文件配置以下:网络

<distributionManagement>  
        <repository>  
            <id>gpcmarket-releases</id>
            <url>http://ip:port/nexus/repositories/releases/</url>  
        </repository>  
        <snapshotRepository>  
            <id>gpcmarket-snapshots</id>
            <url>http://ip:port/nexus/repositories/snapshots/</url>  
        </snapshotRepository>  
</distributionManagement>

 可是Nexus仓库对于匿名用户是只读的,因此为了可以部署构件,还须要在settings.xml文件中配置认证信息。eclipse

<servers>
    <server> 
        <id>gpcmarket-releases</id> 
        <username>user</username> 
        <password>pwd</password> 
    </server>
    <server> 
        <id>gpcmarket-snapshots</id> 
        <username>user</username> 
        <password>pwd</password> 
    </server> 
</servers>

固然对于一些因为许可证因素等没法发布到公共仓库的构件,咱们只能本身下载而后经过Nexus的界面手动上传到私服中。
到此为止,Nexus私服的搭建与配置基本完毕,下面是关于权限管理的问题。
出于安全性考虑、须要对Nexus仓库进行权限管理、好比只有管理员才能配置Nexus、某个项目组有特定的仓库、等等。maven

7. Nexus的访问控制模型

Nexus是基于权限(Privilege)作访问控制的。一个用户能够被赋予一个或者多个角色、一个角色能够包含一个或者多个权限、还能够包含一个或者多个角色。用户必须拥有相应的角色继而拥有相应权限、才能作相应操做,可是有一点要注意这里的权限都是基于仓库的,即对仓库的增删改查权限。ui

     在3.x版本中, Nexus只预约义了两个重要的角色:url

  • nx-admin:拥有Nexus全部权限
  • nx-anonymous:匿名用户角色,拥有访问Nexus界面,浏览仓库内容和搜索构件的功能。

7.1 添加snapshots可读写、其余只读用户

  1. 建立角色nx-snap, 赋权nx-repository-view-*-*-browse、nx-repository-view-*-*-read、nx-repository-view-maven2-maven-snapshots-*
  2. 建立用户snap,赋角色nx-snap

8. Nexus调度任务

    Nexus提供了一系列可配置的调度任务来方便用户管理系统。用户能够设定这些任务运行的方式,例如天天、每周等。调度任务会在适当的时候在后台运行。
    要创建一个调度任务,单击左边导航菜单中的“Scheduled Tasks”,而后再右边的界面上单击Add按钮,按照页面上的提示填写相关内容。Nexus包含了如下几种类型的调度任务:spa

  1. Download Indexs:为代理仓库下载远程索引。
  2. Empty Trash:清空Nexus的回收站,一些操做实际是将文件移到了回收站中。
  3. Evict UnusedProxied Items From Repository Caches:删除代理仓库中长期未被使用的构件缓存。
  4. Expire RepositoryCache:Nexus为代理仓库维护了远程仓库的信息以免没必要要的网络流量,该任务清空这些信息以强制Nexus去从新获取远程仓库的信息。
  5. Publish Indexs:将仓库索引起布成可供m2eclipse和其余Nexus使用的格式。
  6. Purge NexusTimeline:删除Nexus的时间线文件,该文件用于创建系统的RSS源。
  7. Rebuild MavenMetadata Files:基于仓库内容从新建立仓库元数据文件maven-metadata.xml,同时从新建立每一个文件的校验和md5与sha1。
  8. ReIndex Repositories:为仓库编纂索引。
  9. Remove SnapshotsFrom Repositories:以可配置的方式删除仓库的快照构件。

nexus3官网文档

相关文章
相关标签/搜索