共计 6923 个字符,预计需要花费 18 分钟才能阅读完成。
一、介绍
Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用 Nexus 你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个 Artifact。Nexus 是一套“开箱即用”的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。Nexus 支持 WebDAV 与 LDAP 安全身份认证。
Nexus 的下载地址是:http://www.sonatype.org/nexus/go/ 到官网上将 ZIP 的压缩包下载下来即可,解压之后发现有两个文件夹,一个是 nexus-2.11.0-02,另一个是 sonatype-work;第一个文件夹包含了 Nexus 运行所需要的文件,是运行 Nexus 必须的;第二个文件夹目录包含 Nexus 生成的配置文件、日志文件、仓库文件等,当需要备份 Nexus 的时候,默认备份的是此目录文件。
二、设置环境变量
找到 nexus 目录下 nexus-2.11.0-02 中的 bin 文件夹,将至 bin 的目录路径加入到操作系统的 path 变量中。
使用 Nexus 搭建私服 http://www.linuxidc.com/Linux/2014-03/98707.htm
三、启动
打开 cmd 命令行,输入 nexus 命令,会看到如下提示:start/stop/restart/install/uninstall,只要在 nexus 命令后面加这些命令中的其中之一即可,如下图所示,先安装,然后启动,成功之后可以打开浏览器:http://localhost:8081/nexus/#welcome,看到欢迎界面。单击右上角的“Log In”按钮进行登录,Nexus 的默认管理员账户密码为 admin/admin123。
四、配置 Nexus
登录进去之后,可以看到有 repositories,点击,发现 Releases 和 Snapshots 仓库,其中 Releases 表示内部的模块中 Release 模块的发布仓库,Snapshots 表示发布内部的 Snapshot 模块的仓库。3rd party 表示第三方依赖的仓库,这三种都是 hosted 类型的仓库,其中 Proxy 类型的仓库表示从远程中央仓库中寻找数据的仓库。
我们可以从上图中看到四种仓库类型:group(仓库组)、hosted(宿主)、proxy(代理)和 virtual(虚拟)。其中每种类型的 Format 有 Maven1 或者 Maven2,这里我们不看 Maven1 的。仓库的 Policy(策略)表示该仓库为发布(Release)版本还是快照(Snapshot)版本仓库。
在图 5 中,Nexus 列出了默认的几个仓库:
Public Repositories:仓库组,将所有策略为 Release 的仓库聚合并通过一致的地址提供服务。
3rd party:一个策略为 Release 的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
Apache Snapshots:策略为 Snapshots 的代理仓库,用来代理 Apache Maven 仓库的快照版本构件。
Central:该仓库代理 Maven 的中央仓库,策略为 Release,只会下载和缓存中央仓库中的发布版本构件。
Central M1 shadow:maven1 格式的虚拟类型仓库。
Codehaus Snapshots:代理 Codehaus Maven 仓库快照版本的代理仓库。
Release:策略为 Release 的宿主类型仓库,用来部署组织内部的发布版本构件。
Snapshots:策略为 Snapshots 的宿主类型仓库,用来部署组织内部的快照版本构件。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-12/110502p2.htm
五、下载索引
点击左侧的 Views/Repositories-> 下面出现 Repositories-> 点击右边的 Central-> 点击下面的 Configuration
将 Download Remote Indexes 值改为 true,点击“save”后,点击左边的“Administration”->”Scheduled Tasks” 链接,如果没有出现“Update Repositories Index”处于 Running 状态,那么需要在 Public Repositories 行右击,点击 ”Update Index”。
然后再点击 Schedule Tasks 就可以看到有任务处于 Running 状态了。
等到索引下载完成之后,就可以在 ”Repositories” 界面中,选择 Browser Index 选项卡,可以看到 Maven 中央仓库内容的树形结构,如下图所示。
在左边的搜索框中输入 Spring 关键字,然后搜索,会出现一大堆与 Spring 相关的结果。
一、介绍
Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用 Nexus 你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个 Artifact。Nexus 是一套“开箱即用”的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。Nexus 支持 WebDAV 与 LDAP 安全身份认证。
Nexus 的下载地址是:http://www.sonatype.org/nexus/go/ 到官网上将 ZIP 的压缩包下载下来即可,解压之后发现有两个文件夹,一个是 nexus-2.11.0-02,另一个是 sonatype-work;第一个文件夹包含了 Nexus 运行所需要的文件,是运行 Nexus 必须的;第二个文件夹目录包含 Nexus 生成的配置文件、日志文件、仓库文件等,当需要备份 Nexus 的时候,默认备份的是此目录文件。
二、设置环境变量
找到 nexus 目录下 nexus-2.11.0-02 中的 bin 文件夹,将至 bin 的目录路径加入到操作系统的 path 变量中。
使用 Nexus 搭建私服 http://www.linuxidc.com/Linux/2014-03/98707.htm
三、启动
打开 cmd 命令行,输入 nexus 命令,会看到如下提示:start/stop/restart/install/uninstall,只要在 nexus 命令后面加这些命令中的其中之一即可,如下图所示,先安装,然后启动,成功之后可以打开浏览器:http://localhost:8081/nexus/#welcome,看到欢迎界面。单击右上角的“Log In”按钮进行登录,Nexus 的默认管理员账户密码为 admin/admin123。
四、配置 Nexus
登录进去之后,可以看到有 repositories,点击,发现 Releases 和 Snapshots 仓库,其中 Releases 表示内部的模块中 Release 模块的发布仓库,Snapshots 表示发布内部的 Snapshot 模块的仓库。3rd party 表示第三方依赖的仓库,这三种都是 hosted 类型的仓库,其中 Proxy 类型的仓库表示从远程中央仓库中寻找数据的仓库。
我们可以从上图中看到四种仓库类型:group(仓库组)、hosted(宿主)、proxy(代理)和 virtual(虚拟)。其中每种类型的 Format 有 Maven1 或者 Maven2,这里我们不看 Maven1 的。仓库的 Policy(策略)表示该仓库为发布(Release)版本还是快照(Snapshot)版本仓库。
在图 5 中,Nexus 列出了默认的几个仓库:
Public Repositories:仓库组,将所有策略为 Release 的仓库聚合并通过一致的地址提供服务。
3rd party:一个策略为 Release 的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
Apache Snapshots:策略为 Snapshots 的代理仓库,用来代理 Apache Maven 仓库的快照版本构件。
Central:该仓库代理 Maven 的中央仓库,策略为 Release,只会下载和缓存中央仓库中的发布版本构件。
Central M1 shadow:maven1 格式的虚拟类型仓库。
Codehaus Snapshots:代理 Codehaus Maven 仓库快照版本的代理仓库。
Release:策略为 Release 的宿主类型仓库,用来部署组织内部的发布版本构件。
Snapshots:策略为 Snapshots 的宿主类型仓库,用来部署组织内部的快照版本构件。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-12/110502p2.htm
六、私有仓库配置
在 Settings.xml 中配置远程仓库,Maven 提供的 profile 是一组可选的配置,可以用来设置或者覆盖配置默认值,在 Setting.xml 文件中加入以下代码,
<profiles>
<profile>
<id>local_nexus</id>
<repositories>
<repository>
<id>local_nexus</id>
<name>local_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>local_nexus</id>
<name>local_nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>local_nexus</activeProfile>
</activeProfiles>
上面的配置中,使用了一个 id 为 local_nexus 的 profile,这个 profile 包含了相关的仓库配置,同时配置中又使用了 activeProfiles 元素将 nexus 这个 profile 激活,这样当执行 Maven 构建的时候,激活的 profile 会将仓库配置应用到项目中去。
通过上面的配置,我们会发现 Maven 除了从 Nexus 下载构件外还会从中央仓库下载构件。既然是私服,那么我们就只希望 Maven 下载请求都仅仅通过 Nexus。我们可以通过镜像实现这一需求。可以创建一个匹配任何仓库的镜像,镜像的地址是私服,这样 Maven 对任何仓库的构件下载请求都会转到私服中。把上面的配置修改为如下配置:
<profiles>
<profile>
<id>local_nexus</id>
<repositories>
<repository>
<id>local_nexus</id>
<name>local_nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>http://repo.maven.apache.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local_nexus</id>
<name>local_nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>central</id>
<url>http://repo.maven.apache.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>local_nexus</activeProfile>
</activeProfiles>
七、部署构件到私服
我们在实际开发过程是多个人的,那么总有一些公共模块或者说第三方构件是无法从 Maven 中央库下载的。我们需要将这些构件部署到私服上,供其他开发人员下载。用户可以配置 Maven 自动部署构件至 Nexus 的宿主仓库,也可以通过界面手动上传构件。
使用 Maven 部署构件到 Nexus 私服上
日常开发的快照版本部署到 Nexus 中策略为 Snapshot 的宿主仓库中,正式项目部署到策略为 Release 的宿主仓库中,POM 的配置方式如下:
<distributionManagement>
<repository>
<id>local_nexus_releases</id>
<name>core Release Repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>local_nexus_snapshots</id>
<name>core Snapshots Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
Nexus 的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再 settings.xml 中配置验证信息:
<pre name=”code” class=”plain”><servers>
<server>
<id>local_nexus_releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>local_nexus_snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
其中,验证信息中 service 的 id 应该与 POM 中 repository 的 id 一致。
在 Nexus 界面上手动部署第三方构件至私服
我们除了自己的构件要部署到 Nexus 私服上外,我们有可能还要将第三方构件(如:SQLService 的 JDBC)部署到 Nexus 上。这个时候,在 Nexus 界面上选择一个宿主仓库(如 3rd party),再在页面下方选择 Artifact Upload 选项卡。填写对应的 Maven 坐标。然后点击“Select Artifact(s) for Upload”按钮从本机选择要上传的构件,然后点击“Add Artifact”按钮将其加入到上传列表中。最后,单击页面底部的“Upload Artifact(s)”按钮将构件上传到仓库中。