使用Nexus搭建Maven私有仓库全攻略
为什么需要私有仓库
在企业开发环境中,网络隔离是常见的安全策略。许多公司不允许开发人员直接访问外网,这就导致无法从Maven中央仓库下载依赖包。解决方案是在局域网内搭建一台具有外网访问权限的服务器,部署Nexus私有仓库,开发人员通过该仓库获取依赖。
另一个重要原因是防止IP被中央仓库拉黑。如果同一IP地址频繁大量下载,可能会被中央仓库限制访问。通过私有仓库统一管理依赖,可以有效规避这一风险。
部署Nexus服务
获取安装包
从Sonatype官网下载Nexus 2.x版本:
https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.2-01-bundle.zip
启动服务
解压下载的压缩包,进入bin/jsw目录,根据操作系统选择对应的版本。以Windows 64位系统为例:
console-nexus.bat- 控制台模式启动,关闭命令行窗口后服务停止install-nexus.bat- 安装为系统服务,开机自启(推荐生产环境使用)stop-nexus.bat- 停止服务uninstall-nexus.bat- 卸载服务
访问控制台
服务启动后,访问管理界面:
http://localhost:8081/nexus
使用默认管理员账户登录:
- 用户名:admin
- 密码:admin123
确保8081端口未被其他应用占用。
仓库配置
开启远程索引下载
在管理界面中,选择需要配置的仓库,将"Download Remote Indexes"设置为true,这样Nexus会定期同步中央仓库的索引,方便搜索依赖。
手动上传第三方JAR包
某些企业级JAR包中央仓库没有提供,需要手动上传:
- 在仓库管理界面选择"Artifact Upload"选项卡
- 填写GAV参数:groupId、artifactId、version
- 选择需要上传的JAR文件
- 点击上传按钮完成部署
重要提示:如果希望依赖自动从中央仓库同步到私有仓库,必须正确配置远程仓库的索引下载选项。
Maven客户端配置
配置settings.xml
修改Maven安装目录下的conf/settings.xml文件,配置本地仓库路径和镜像地址:
<settings>
<localRepository>D:\maven\repository</localRepository>
<mirrors>
<mirror>
<id>nexus-mirror</id>
<mirrorOf>central</mirrorOf>
<name>Nexus Mirror</name>
<url>http://192.168.100.50:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
</settings>
配置说明:
localRepository:指定本地仓库的存储路径mirrorOf:设置为central表示所有对中央仓库的请求都重定向到私有仓库url:填入Nexus服务器的实际IP地址
配置服务器认证信息
在settings.xml的server节点中添加发布用的认证信息:
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
项目部署配置
配置项目pom.xml
在项目的pom.xml中添加distributionManagement配置:
<project>
...
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releases Repository</name>
<url>http://192.168.100.50:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://192.168.100.50:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
注意事项:pom.xml中repository的id必须与settings.xml中server的id保持一致,否则会出现权限验证失败的错误。
执行部署
在Eclipse中右键点击项目,选择"Run As" → "Maven Build",在Goals中输入deploy,然后执行即可将项目发布到私有仓库。
发布成功后,可以在Nexus管理界面的仓库列表中查看已部署的构件。
总结
通过以上步骤,Maven私有仓库即可搭建完成并投入使用。开发人员只需在本地配置好Maven的settings.xml,即可透明地使用私有仓库中的依赖,无需关心依赖的实际来源。