`
leonzhx
  • 浏览: 767672 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第九章 使用Nexus创建私服

阅读更多

1.   Nexus 分为开源版和企业版,开源版基于 GPLv3 许可证。开源版本主要特性有:

1)   较小的内存占用(最少为 28MB

2)   基于 ExJS 的友好界面

3)   基于 Restlet 的完全 REST API

4)   支持代理仓库、宿主仓库和仓库组

5)   基于文件系统,不需要数据库

6)   支持仓库索引和搜索

7)   支持从界面上传 Maven 构件

8)   细粒度的安全控制。


2.   Nexus 的下载地址是: http://nexus.sonatype.org/downloads/ 。有两种安装包:一种是自带 jetty 容器的 Bundle 包,另一种是不带 web 容器的 war 包。


3.   Bundle 包安装目录下会有两个目录: nexus-webapp-x.x.x 包含了 Nexus 运行所需的文件。 sonatype-work 下包含 Nexus 生成的配置文件、日志文件、仓库文件等。 Nexus 默认访问地址是: http://localhost:8081/nexus

如需要改变端口,可以修改 nexus-webapp-x.x.x/conf/plexus.properties 文件中的    application-port 属性即可。

 

4.   Nexus 的仓库类型有四种: group (仓库组)、 hosted (宿主)、 proxy (代理)和 virtual (虚拟)。仓库组没有具体的内容,它会转向其包含的宿主仓库或代理仓库获得实际构件的内容。宿主仓库主要是用来存放一些组织内部的构件,或由于版权原因不能放在公共 Maven 仓库中的构件的。代理仓库则是用来代理远程仓库,它会从远程仓库下载并缓存构件。虚拟仓库用于 maven1 格式的仓库,会动态地将仓库内容格式进行转换。


 

5.   Nexus 内置了如下仓库:

1)  Maven Central :代理 Maven 的中央仓库,策略为 release

2)  Releases :策略为 Release 的宿主类仓库,用来部署组织内部的 release 版本构件

3)  Snapshots :策略为 Snapshot 的宿主类仓库,用来部署组织内部的 release 版本构件

4)  3rd party :策略为 Release 的宿主类仓库,用来部署无法从公共仓库获得的第三方 release 版构件。

5)  Apache Snapshots :代理 Apache Maven 仓库,策略为 Snapshot

6)  Codehaus Snapshots :代理 Codehaus Maven 仓库,策略为 Snapshot

7)  Google Code :代理 Google Code Maven 仓库,策略为 Release

8)  Java.net – Maven 2 :代理 Java.net Maven 仓库,策略为 Release

9)  Public Repositories :将上述策略为 Release 的仓库聚合并通过一致的地址提供服务。

10)  Public Snapshot Repositories :将上述策略为 Snapshot 的仓库聚合并通过一致的地址提供服务。

 

6.   创建 Nexus 宿主仓库时,仓库会默认地存放在 sonatype-work/nexus/storage/repository-id/ 下,也可以填写 Override Local Storage Location 自定义仓库的存储路径。同时可以设置以下选项:

Deployment Policy :只读(禁止部署)、关闭重新部署(同一构件只能部署一次)或允许重新部署。

Allow File Browser :设置是否允许在 Repository Browse Storage 选项卡中浏览仓库。

Include in Search :设置是否对该仓库进行索引并提供搜索。

Publish URL :设置是否通过 URL 提供服务,如为 false ,访问该仓库的地址时会得到 404

Not Found Cache TTL :缓存未找到文件信息的时间(此时间内不再去找,直接返回没找到)

 

7.   创建 Nexus 代理仓库时,除了设置远程仓库的地址和认证信息外,还可以设置以下选项:

Download Remote Indexes :设置是否下载远程仓库的索引。(下载远程仓库的索引后,即使没有缓存远程仓库的构件,用户依然能搜索或浏览构件的基本信息)

Checksum Policy :设置校验和出错时,是忽略、记录警告信息还是拒绝下载。

Artifact Max Age :设置多久更新一次 Artifact (对于策略为 release 的仓库,可以设置为 -1 ,也就是不更新)

Metadata Max Age :设置多久更新一次 metadata

 

8.   仓库组没有 Release Snapshot 的区别,创建时会让用户选择由哪些宿主仓库或代理仓库构成。仓库组所包含的仓库的顺序决定了仓库组遍历它们的次序,所以最好将常用的仓库放在前面。

 

9.   Nexus 通过维护仓库的索引来提供搜索功能。为了能搜索 Maven 中央仓库,需要设置 Nexus 中的 Maven Central 代理仓库下载远程索引,默认这个设置是关闭的。只要远程仓库提供 nexus-indexer 形式的索引, Nexus 就可以下载它的索引,同时 Nexus 也可以对宿主仓库和代理仓库进行索引。仓库有了索引之后,可以在其 Browse Index 选项卡中浏览仓库内容的树形结构。

 

10.   Nexus 提供了关键字搜索、 GAV 搜索、类名搜索和校验和搜索。

 

11.   我们可以在 settings.xml 中配置 Maven 私服,这样就可以对本机的所有 Maven 项目有效。但是 settings.xml 中没有 Repositories pluginRepositories 。但可以设置如下信息:

 

<profiles>

  <profile>

    <id>nexus</id>

    <repositories>

      <repository>

        <id>nexus</id>

        <name>Nexus</name>

        <url>http://localhost: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://localhost:8081/nexus/content/groups/public/</url>

        <releases><enabled>true</enabled></releases>

        <snapshots><enabled>true</enabled></snapshots>

    </pluginRepositories>

  </profile>

</profiles>

<activeProfiles>

    <activeProfile>nexus</activeProfile>

</activeProfiels> 


 

同时我们可以 settings.xml 中将 Maven 私服设为所有远程仓库的镜像,这样就能让所有 Maven 下载请求都仅仅通过 Nexus

 

<mirrors>

  <mirror>

    <id>nexus</id>

    <mirrorOf>*</mirrorOf>

    <url>http://localhost:8081/nexus/content/groups/public</url>

  </mirror>

</mirrors> 



 

12.  可 以在 settings.xml 中的 profile 元素中添加以下元素:

 

<repositories>

     <repository>

        <id>central</id>

        <url>http://central</url>

        <releases><enabled>true</enabled></releases>

        <snapshots><enabled>true</enabled></snapshots>

    </repository>

</repositories>

<pluginRepositories>

    <pluginRepository>

        <id>central</id>

        <url>http://central</url>

        <releases><enabled>true</enabled></releases>

        <snapshots><enabled>true</enabled></snapshots>
    
    </pluginRepository>

 </pluginRepositories> 



 

仓库及插件仓库的 id central ,覆盖了超级 POM 中央仓库的配置它们的 url 已无关紧要,因为所有请求都会通过镜像访问私服地址。这样配置的主要目的是开放对 snapshot 版本下载的支持。

其实只要项目配置中有一个依赖仓库开放了 snapshot 策略就行。而且如果私服仓库组中的仓库不支持 snapshot 也没用。

 

13.   可以在 POM 中设置构件发布到哪个远程仓库,将这个仓库设置成 Nexus 私服:

 

<distributionManagement>

  <repository>

    <id>nexus-releases</id>

    <name>Nexus Releases Repository</name>

    <url>http://localhost:8081/nexus/content/repositories/releases/</url>

  </repository>

  <snapshotRepository>

    <id>nexus-snapshots</id>

    <name>Nexus Snapshots Repository</name>

    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>

  </snapshotRepository>

</distributionManagement> 



 

同时在 settings 中的配置 Nexus 的认证信息:

 

<servers>

  <server>

    <id>nexus-releases</id>

    <username>admin</username>

    <password>password</username>

  </server>

  <server>

    <id>nexus-snapshots</id>

    <username>admin</username>

    <password>password</username>

  </server>

</servers> 

 

同时, Nexus 也支持在 repository Artifact Upload 选项卡中手动上传构件。

 

14.   一个 Nexus 用户可以被赋予一个或多个角色,一个角色可以包含一个或多个权限,也可以包含一个或多个其他角色。

 

15.  N exus 预定义了三个用户:

1)  admin :对 Nexus 服务的完全控制权限,默认密码为 admin123

2)  deployment :能够访问 Nexus ,浏览仓库内容,搜索并且上传部署构件但无法配置 Nexus ,默认密码为: deployment123

3)  anonymous :对应所有未登录用户,可以浏览和搜索仓库

 

16.   我们可以为不同的实际项目配置不同的宿主仓库,并为这些宿主仓库建立他们对应的增、删、改、查的权限(通过导航栏中 Privileges 链接),并将这些权限赋予不同的角色(通过导航栏中 Roles 链接)

 

17.   Nexus 提供了如下一系列可调度任务( Scheduled Tasks )来方便用户管理系统。用户可以设定这些任务的运行频率。

1)  Download Indexes :为代理仓库下载远程索引

2)  Empty Trash :清空 Nexus 的回收站

3)  Evict Unused Proxied Items From Repository Caches :删除代理仓库中长期未被使用的构件缓存。

4)  Expire Repository Caches :清空代理仓库的缓存,重新去获取远程仓库的信息。

5)  Publish Indexes :将仓库索引发布成可供 m2eclipse 和其他 Nexus 使用的格式。

6)  Purge Nexus TimeLine :删除 Nexus 时间线文件,该文件用于建立系统的 RSS 源。

7)  Rebuild Maven Metadata Files :基于仓库内容重新创建 metadata

8)  ReIndex Repositories :为仓库重新编纂索引。

用户可以通过导航栏中 Scheduled Tasks 链接创建可调度任务。

 

18.   其他私服软件还有: Archiva ,它是 Apache 的顶级项目,地址为 http://achiva.apache.org

JFrog Artifactory ,它将构件存储在数据库中,地址为 http://www.jfrog.org/products.php

  • 大小: 2.6 MB
分享到:
评论
2 楼 superich2008 2014-05-16  
很全面的资料,楼主幸苦了!
1 楼 abc08010051 2014-03-08  
很详细,不错

相关推荐

Global site tag (gtag.js) - Google Analytics