windows下集成maven+eclipse开发环境一:安装使用maven私服nexus

本文介绍了如何使用Nexus搭建和配置Maven私服,包括安装、基本配置、仓库管理等内容。Nexus提供了多种仓库类型,如代理仓库、宿主仓库等,并支持仓库组等功能。文章还详细说明了如何在settings.xml中配置私服。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。但可以设置如下信息:

Xml代码 收藏代码
  1. <profiles>
  2. <profile>
  3. <id>nexus</id>
  4. <repositories>
  5. <repository>
  6. <id>nexus</id>
  7. <name>Nexus</name>
  8. <url>http://localhost:8081/nexus/content/groups/public/</url>
  9. <releases><enabled>true</enabled></releases>
  10. <snapshots><enabled>true</enabled></snapshots>
  11. </repository>
  12. </repositories>
  13. <pluginRepositories>
  14. <pluginRepository>
  15. <id>nexus</id>
  16. <name>Nexus</name>
  17. <url>http://localhost:8081/nexus/content/groups/public/</url>
  18. <releases><enabled>true</enabled></releases>
  19. <snapshots><enabled>true</enabled></snapshots>
  20. </pluginRepositories>
  21. </profile>
  22. </profiles>
  23. <activeProfiles>
  24. <activeProfile>nexus</activeProfile>
  25. </activeProfiels>

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

Xml代码 收藏代码
  1. <mirrors>
  2. <mirror>
  3. <id>nexus</id>
  4. <mirrorOf>*</mirrorOf>
  5. <url>http://localhost:8081/nexus/content/groups/public</url>
  6. </mirror>
  7. </mirrors>

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

Xml代码 收藏代码
  1. <repositories>
  2. <repository>
  3. <id>central</id>
  4. <url>http://central</url>
  5. <releases><enabled>true</enabled></releases>
  6. <snapshots><enabled>true</enabled></snapshots>
  7. </repository>
  8. </repositories>
  9. <pluginRepositories>
  10. <pluginRepository>
  11. <id>central</id>
  12. <url>http://central</url>
  13. <releases><enabled>true</enabled></releases>
  14. <snapshots><enabled>true</enabled></snapshots>
  15. </pluginRepository>
  16. </pluginRepositories>

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

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

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

Xml代码 收藏代码
  1. <distributionManagement>
  2. <repository>
  3. <id>nexus-releases</id>
  4. <name>NexusReleasesRepository</name>
  5. <url>http://localhost:8081/nexus/content/repositories/releases/</url>
  6. </repository>
  7. <snapshotRepository>
  8. <id>nexus-snapshots</id>
  9. <name>NexusSnapshotsRepository</name>
  10. <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
  11. </snapshotRepository>
  12. </distributionManagement>

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

Xml代码 收藏代码
  1. <servers>
  2. <server>
  3. <id>nexus-releases</id>
  4. <username>admin</username>
  5. <password>password</username>
  6. </server>
  7. <server>
  8. <id>nexus-snapshots</id>
  9. <username>admin</username>
  10. <password>password</username>
  11. </server>
  12. </servers>

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

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

15. Nexus预定义了三个用户:

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

下载最新的Nexus安装包。


解压压缩包,进入nexus-2.0.4-1-bundle\nexus-2.0.4-1\bin\jsw目录,该目录中存放了对应各种系统的安装文件。因为这里只阐述windows下面的安装方法,所以请进入windows-x86-32(对应32位系统)或者windows-x86-64(对应64位系统)文件夹。首先,我们先将nexus注册成windows服务,双击install-nexus.bat即可;然后双击start-nexus.bat启动nexus服务;另外stop-nexus.bat是停止运行nexus服务,uninstall-nexus.bat是卸载nexus服务。

至此为止nexus就已经全部安装完成了,下面看看我们该怎样使用它。

在浏览器输入地址:http://127.0.0.1:8081/nexus/就可以访问我们新搭建的maven私服了。

备注:

更改访问端口:修改nexus-webapp-2.0.2/conf/plexus.properties


image

我们先从右上角(Log In)登录,默认的账号密码分别是:admin/admin123

下面你需要依次做两件事情:

1、修改当前密码。页面左边,Security菜单下面的Change Password可以更改当前密码

2、开启远程索引下载,作用是在eclipse等IDE里面使用maven搜索导入第三方jar包的时候,就可以直接从网络上现有的资源中down下来,比如想SSH,要用到的相关jar包,基本

nexus中的现有仓库中都会有。要开启远程索引,可按以下步骤操作:

从页面左边的Views/Repositories菜单下面的Repositories进入仓库列表,然后选择一个仓库,点击下方的Configuration标签,找到Download Remote Indexes项,将其改为

true,如图:

image

然后在刚才选择的仓库上,右键,Repair Index,如图:

image

这样,nexus就会从远程仓库中更新索引。

至此为止,nexus的安装和最基本的配置,已经完成,已经能够满足maven的使用了,其他的功能,诸如搜索,自建仓库,上传第三方jar包等操作,在以后的章节中会涉及到。

在下一章会介绍安装maven,并将nexus配置为maven的中央仓库。

4、修改settings.xml文件:增加server配置

Xml代码 收藏代码
  1. <servers>
  2. ……
  3. <server>
  4. <id>nexus</id>
  5. <username>admin</username>
  6. <password>admin123</password>
  7. </server>
  8. <server>
  9. <id>nexus-snapshot</id>
  10. <username>admin</username>
  11. <password>admin123</password>
  12. </server>
  13. </servers>

此处的id将于pom文件中的repository.id 对应


5、修改pom文件:

Xml代码 收藏代码
  1. <!--设定使用Release插件发布的仓库服务器如有Nexus私服,取消注释并指向正确的服务器地址.-->
  2. <distributionManagement>
  3. <repository>
  4. <id>nexus</id>
  5. <name>TeamNexusReleaseRepository</name>
  6. <url>http://localhost:8081/nexus/content/repositories/releases</url>
  7. </repository>
  8. <snapshotRepository>
  9. <id>nexus-snapshot</id>
  10. <name>TeamNexusSnapshotRepository</name>
  11. <url>http://localhost:8081/nexus/content/repositories/snapshots</url>
  12. <uniqueVersion>false</uniqueVersion>
  13. </snapshotRepository>
  14. </distributionManagement>

注意:server.id == respository.id --> respository.id 的认证会使用server.id 的口令

6、mvn clean deploy


三.管理资源库
为了管理的Nexus仓库,登录以管理用户,在导航库菜单中的左手。 如果您的Nexus登录到作为一个具有管理权限的用户,你会看到窗口配置的Nexus和标签的下半部分。Nexus的仓库提供了三种不同的库:
代理库
代理库是一个远程仓库代理。 默认情况下,具有以下配置的代理仓库Nexus的船舶:
Apache快照
这个库包含来自Apache软件基金会发布http://people.apache.org/repo/m2-snapshot-repository快照
Codehaus的快照
这个仓库包含从Codehaus的http://snapshots.repository.codehaus.org/发布快照
Maven的中央仓库
这是中央存储库(版本)。http://repo1.maven.org/maven2/
托管库
托管的存储库是一个信息库是由Nexus的主持。 下面是配置Maven的托管库:
第三方
此托管仓库应该是第三方的依赖并不符合公众可使用Maven仓库。 这些依赖的例子可以是商业,如Oracle JDBC驱动程序,您的组织可能会被引用的专利库。
Releases
此托管库是你的组织将发布内部版本。
Snapshots
此托管库是你的组织将发布内部快照。
虚拟库
这不但可以作为仓库,从不同类型的适配器。 目前支持的Nexus转换和从Maven 1和Maven 2仓库仓库。


图6.9。版本库的代理配置屏幕
四.管理组
组是Nexus的强大的功能,一个组下面可以有多个资源库,它允许您用一个URL地址引用组。


图6.18。组在Nexus的配置屏幕
请注意,按顺序列出的库的顺序是重要的。 当一个artifact某个库中找到,将返回第一个匹配。 要重新排列,在此列表中,点击并拖动的库进行重新排序。为了更快的找到所需的版本,把最容易找到的库房在前面。

配置使用Nexus组

在~/.m2/settings.xml中添加
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<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>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
Nexus使用假的http://central作为访问资源库的url地址,在被用到时,会用mirror指定的地址进行替换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值