Windows 环境下搭建 Maven 私有仓库(私服)
前言
私服是指私有服务器,是在局域网的一种特殊的远程仓库,目的就是代理远程仓库及部署第三方构建,有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服将请求外部的远程仓库,将构件下载到私服,在提供给本地仓库下载。
Nexus 介绍
nexus 是一个强大的 Maven 仓库管理器,可以做私服,它极大的简化了本地内部仓库的维护和外部仓库的访问。
nexus 是一套开箱即用的系统,不需要数据库,它使用文件系统加 Lucene 来组织数据。
支持 WebDAV 与 LDAP 安全身份认证。
提供了强大的仓库管理功能,构件搜索功能。
搭建步骤
首先下载安装包,官网地址:https://www.sonatype.com/product/repository-oss-download
在国内,可能会打不开,或者下载龟速,所以提供了安装包!
nexus-3.30.0-01-win64.zip
下载完成之后进行解压到任意磁盘,无需安装
进入 bin 目录下运行 cmd
输入 nexus /run
启动成功之后打开浏览器访问 http://localhost:8081/
,默认端口是 8081,修改端口在 nexus-3.30.0-01\etc\nexus-default.properties
文件
初始化完成之后点击 Sign in
登陆,默认账号是 admin
,默认密码在 sonatype-work\nexus3
下的 admin.password
文件
登录成功之后会要求你重新设置一个新的密码
接着添加阿里云仓库,如图
在页面取名叫 aliyun-repository
(建议用 a 开头,这样字母排序它就排第一位)
URL 输入:http://maven.aliyun.com/nexus/content/groups/public/
其它不用管,默认即可,最后点击创建!
接着点击 maven-public
双击 aliyun-repository
移到右侧最后保存!
nexus 搭建完成!
配置 Maven
在 setting.xml
文件里的 <servers>
标签内加入以下配置(password
是你设置的密码)
1 | <server> |
打包发布到私服
在你项目里的 pom.xml
中加入以下配置(其中 id 对应 setting.xml
中的 server id)
1 | <distributionManagement> |
然后先点击 clean,按住 CTRL 键再点击 deploy,最后点击上方运行按钮!
不幸的是,报 400 错误
1 | Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project ssm-book: Failed to deploy artifacts: Could not transfer artifact org.example:ssm-book:war:1.0-20210406.103711-1 from/to nexus-releases (http://127.0.0.1:8081/repository/maven-releases): Transfer failed for http://127.0.0.1:8081/repository/maven-releases/org/example/ssm-book/1.0-SNAPSHOT/ssm-book-1.0-20210406.103711-1.war 400 Repository version policy: RELEASE does not allow version: 1.0-20210406.103711-1 |
对于 400 错误,网上的解决办法有如下
选择 Security 下的 Anonymous Access,将 Username 改为 admin
点击 maven-releases
把 Deployment policy 改为 Allow redeploy,最后保存即可(这个作用就是允许重新部署,比如已存在的 jar 包,是不能再重新部署的)
还有一种是版本问题,就是你不能发布 SNAPSHOT
(快照) 版本到 Release 类型的仓库,查看 pom.xml
,看看是不是 SNAPSHOT
版本,然后修改它!
最后发布成功!熟悉的 BUILD SUCCESS
最后我们可以查看已发布的包
我们还可以使用私服中的 jar 包
在 pom.xml
添加
1 | <repositories> |
不仅要指定 repositories 的 url
,我们还要在 dependencies 标签加入依赖
1 | <dependency> |
这时候私服中的 jar
包就已经下载到本地了!
至此,一个简单的搭建及上传就大功告成了!