安装
1 | mkdir -p /usr/local/nexus3/nexus-data |
有默认的这几个仓库:
- maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
- maven-releases:私库发行版jar,初次安装请将
Deployment policy设置为Allow redeploy - maven-snapshots:私库快照(调试版本)jar
- maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置
settings.xml中使用。
Nexus默认的仓库类型有以下四种:
- group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
- hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库);
- proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径);
- virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
Policy(策略): 表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
创建Blob Stores
文件存储的地方,创建一个目录的话,对应文件系统的一个目录,可供仓库上传文件使用,如图所示:

创建一个阿里云的代理仓库
由于访问中央仓库有时候会比较慢,这里添加一个阿里云的代理仓库,然后优先级放到默认中央库之前, 阿里云的maven仓库url为
http://maven.aliyun.com/nexus/content/groups/public

然后再maven-public组里面将这个
aliyun-proxy仓库加入,排在maven-central之前即可。

Nexus仓库分类的概念
1)Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件
2)为了方便,Maven可以从仓库组下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容)

本地Maven使用私服
安装和配置好之后,在开发中可在maven的默认配置settings.xml中修改如下:
这里需要注意几点:
<id>元素必须在repositories、pluginRepositories和distributionManagement元素中保持一致。且pom.xml中指定的<id>和setting.xml中下的<id>对应上(无论是<server>、<mirror>或是其他标签)!这是因为<id>元素用于唯一标识 Maven 存储库,以便 Maven 可以在settings.xml文件中的元素中查找与之匹配的凭据。<url>元素指定 Maven 存储库的 URL。确保 URL 是正确的,并且可以通过网络访问。<releases>元素和<snapshots>元素用于指定 Maven 存储库是否支持发布版本和快照版本。对于支持发布版本的存储库,将<releases>元素的<enabled>子元素设置为true,对于支持快照版本的存储库,将<snapshots>元素的<enabled>子元素设置为true。如果您的存储库不支持某种类型的版本,则可以将相应的元素设置为false。<updatePolicy>元素指定 Maven 更新依赖关系的策略。对于快照版本,可以将<updatePolicy>元素设置为always,以确保 Maven 始终从存储库中获取最新的快照版本。对于发布版本,通常将<updatePolicy>元素设置为daily或never,以减少网络流量和依赖项下载时间。- 如果您使用了自签名的 SSL 证书,则需要在 Maven 的
settings.xml文件中配置<servers>元素,并将trustStore和trustStorePassword属性设置为包含 SSL 证书的 Java 密钥库和密码,以便 Maven 可以验证 SSL 证书并与 Nexus 存储库建立安全连接。
1 | <servers> |
元素activeByDefault:
配置了
<activeByDefault>标签的profile只会在没有其他激活的profile的情况下被激活元素updatePolicy:
用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never——从不检查更新;always——每次构建都检查更新;in-terval:X——每隔X分钟检查一次更新(X为任意整数)。
元素checksumPolicy:
用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息,其他可用的值包括:fail——Maven遇到校验和错误就让构建失败;ignore——使Maven完全忽略校验和错误。
发布jar到私服
如果需要发布自己的jar到私服,就需要修改工程:
setting.xml
1 | ... |
pom.xml
1 | <distributionManagement> |
注意上面的repository的id值一定要跟settings.xml文件中配置的server一致。
这里使用SpringBoot的starter项目作为测试。
部署到快照版仓库【后缀:SNAPSHOT】
将jar包部署到快照仓库,
pom.xml中的版本配置为0.0.1-SNAPSHOT,
标识为快照。

部署到发行版仓库【后缀:RELEASE,也可以只用版本号】
将jar包部署到发行版仓库,
pom.xml中的版本配置为0.0.1-RELEASE,
标识为发行版,也可以只用版本号,如0.0.1。

- 成功标识:

查看仓库
完成Nexus Repository私有仓库部署,登录私仓后,可以看到多个仓库,
仓库分类如下表所示,
| 序号 | 仓库 | 描述 |
|---|---|---|
| 1 | maven-central | 中央仓库,默认从https://repo1.maven.org/maven2/拉取软件包,可配置 |
| 2 | maven-public | 公共仓库,存储发行版和快照版的软件包,即发行版和快照版的软件包都会在public中 |
| 3 | maven-releases | 发行版仓库,软件包稳定后,发布到该仓库,团队内使用 |
| 4 | maven-snapshots | 快照版本仓库,用于测试软件,发布到线上 |
小记:执行指令上传jar到Nexus
- 本地开发完的jar可以直接执行deploy
1 | mvn clean deploy |
- 第三方Jar上传到Nexus
1 | mvn deploy:deploy-file \ |
-DrepositoryId的值即为在setttings.xml里面配置的server id。
使用私服中的依赖
在项目中添加私有仓库的地址,
通过repositories属性,与dependencies属性同级。
再引入对应的jar包Maven坐标,
配置样例如下:
1 | <repositories> |