Nexus Repository搭建maven远程仓库

使用Nexus Repository搭建maven远程仓库

安装及启动服务

使用Nexus Repository Manager在Windows Server上搭建Maven中央仓库是一个常见的做法。以下是一个详细的步骤指南,帮助你完成这一任务:

一、准备工作

下载Nexus Repository Manager

访问Sonatype Nexus Repository Manager的官方网站或相关下载页面。

根据你的操作系统(Windows)选择相应的安装包进行下载。

安装Java环境

确保你的Windows Server上已经安装了Java Development Kit(JDK)。

Nexus需要JDK来运行,因此请确保JDK的版本与Nexus的要求相匹配。

二、安装Nexus Repository Manager

解压安装包

将下载的Nexus安装包解压到一个合适的目录。

配置内存

打开解压后的目录,找到nexus.vmoptions文件。

根据你的服务器配置,调整内存设置。

安装Nexus服务

以管理员身份打开命令提示符。

切换到Nexus的bin目录。

执行nexus.exe /install命令来安装Nexus服务。

启动Nexus服务

执行nexus.exe /start命令来启动Nexus服务。(有的版本启动命令为nexus.exe /run)

你可以使用nexus.exe /status命令来检查服务是否已启动。

三、配置Nexus

访问Nexus Web界面

打开浏览器,输入http://localhost:8081(默认端口为8081,如果端口被占用或已修改,请使用相应的端口号)。

使用默认的用户名(通常是admin)和密码(在sonatype-work\nexus3\admin.password文件中可以找到)登录。

修改默认密码

登录后,系统会提示你修改默认密码。请按照提示操作。

创建Maven仓库

在Nexus Web界面中,导航到"Repositories"页面。

点击"Create repository"按钮。

选择"Maven2 (hosted)"作为仓库类型。

填写仓库名称和其他相关信息。

点击"Create repository"按钮完成仓库的创建。

配置Maven客户端

在你的Maven项目的settings.xml文件中,配置仓库的镜像或代理设置。

你可以将Nexus仓库配置为默认的镜像仓库,以便Maven在下载依赖时优先使用Nexus仓库。

四、上传和管理依赖

手动上传依赖

在Nexus Web界面中,导航到"Components"页面。

选择你创建的Maven仓库。

点击"Upload"按钮,手动上传你的Maven项目依赖(如JAR文件)。

通过Maven命令上传依赖

配置你的Maven项目的pom.xml文件,指定分发管理(distributionManagement)部分。

使用mvn clean deploy命令将项目依赖上传到Nexus仓库。

五、验证和监控

验证仓库配置

在Nexus Web界面中,检查新创建的仓库是否包含已上传的依赖。

使用Maven客户端下载依赖,验证是否能够从Nexus仓库中获取依赖。

监控仓库状态

在Nexus Web界面中,监控仓库的使用情况和状态。

定期检查日志和报告,以确保仓库的稳定性和安全性。

通过以上步骤,你可以在Windows Server上使用Nexus Repository Manager成功搭建Maven中央仓库。这将大大提高你的Maven项目的构建效率和依赖管理的便利性。

更改IP端口

要修改Nexus的端口,可以按照以下步骤进行:

一、确定Nexus版本和安装路径

首先,需要确定你正在使用的Nexus版本以及它的安装路径。不同版本的Nexus可能在文件结构和配置文件上有所不同。

二、找到配置文件

Nexus 2.x :

配置文件通常位于<安装目录>/nexus/conf/或<安装目录>/nexus/bin/jsw/conf/目录下的nexus.properties文件中。

找到application-port属性,该属性表示Nexus的端口号。

Nexus 3.x :

配置文件通常位于<安装目录>/etc/目录下的nexus.properties文件或nexus-default.properties文件中。

同样找到application-port属性,并修改其值以更改端口号。

三、修改端口号

  1. 打开找到的nexus.properties或nexus-default.properties文件。
  2. 搜索application-port属性。
  3. 将application-port属性的值更改为你想要的端口号。例如,将其更改为8085。

四、保存配置文件并重启Nexus

  1. 保存对配置文件的更改。
  2. 重启Nexus服务以使更改生效。

对于Nexus 2.x,可以在<安装目录>/nexus/bin/目录下运行相应的启动脚本(如start-nexus.sh或start-nexus.bat)来重启服务。

对于Nexus 3.x,可以在<安装目录>/bin/目录下运行./nexus start命令来重启服务。

五、验证更改

  1. 等待Nexus服务完全启动。
  2. 通过浏览器访问http://localhosthttp://localhost:新端口号/(例如http://localhost:8085/)来验证更改是否成功。
  3. 如果能够成功访问Nexus的Web界面,则说明端口更改已成功。

注意事项

  1. 端口冲突 :在更改端口号之前,请确保新端口没有被其他服务占用。
  2. 防火墙设置 :如果Nexus部署在服务器上,并且需要通过外部网络访问,请确保服务器的防火墙设置允许新端口的通信。
  3. 备份配置文件 :在修改配置文件之前,建议备份原始文件,以便在出现问题时能够恢复原始设置。

通过以上步骤,你可以成功地修改Nexus的端口号。

创建账号

在Nexus中创建账号密码和进行授权通常涉及几个关键步骤,以下是详细的操作指南:

一、创建账号

登录Nexus管理界面 :

使用管理员账号(通常是admin)登录到Nexus Repository Manager的Web界面。

导航到用户管理页面 :

在左侧导航栏中找到并点击"Security"或"Users and Roles"等类似的选项。

进入用户管理页面。

创建新用户 :

在用户管理页面中,找到并点击"Create User"或类似的按钮。

输入新用户的用户名、密码、电子邮件等必要信息。

注意,密码通常需要符合一定的复杂度要求。

保存用户信息 :

确认所有信息无误后,点击"Save"或类似的按钮保存新用户信息。

二、授权账号

创建角色 (如果需要):

在角色管理页面(通常在"Security"或"Users and Roles"下),点击"Create Role"或类似的按钮。

输入角色名称,并配置该角色可以访问的仓库、权限等。

例如,可以创建一个只能访问特定仓库并具有下载权限的角色。

为用户分配角色 :

回到用户管理页面,找到刚才创建的新用户。

在用户详情页面中,找到并点击"Roles"或类似的选项。

为用户分配一个或多个角色。这些角色将决定用户能够访问哪些仓库以及具有哪些权限。

保存角色分配 :

确认角色分配无误后,点击"Save"或类似的按钮保存设置。

三、验证账号和权限

使用新用户登录 :

使用刚才创建的新用户账号和密码登录到Nexus管理界面或客户端工具(如Maven、Gradle等)。

访问仓库 :

尝试访问用户被授权访问的仓库。

如果一切正常,用户应该能够成功访问并操作这些仓库中的资源。

检查权限 :

如果用户无法访问某些资源或执行某些操作,请检查用户的角色分配和仓库权限设置是否正确。

注意事项

密码安全 :

确保为用户设置强密码,并定期更换密码以减少安全风险。

考虑使用密码管理工具或Nexus提供的密码加密功能来保护密码。

权限管理 :

仔细配置用户的权限,确保他们只能访问和操作他们需要的资源。

定期审查用户权限,以确保没有不必要的权限分配。

备份和恢复 :

定期备份Nexus配置和用户数据,以防止数据丢失或损坏。

了解如何恢复Nexus配置和用户数据,以便在需要时能够快速恢复服务。

通过以上步骤,你可以在Nexus中成功创建账号、分配权限并验证账号的有效性。这将有助于确保只有授权用户能够访问和操作你的仓库资源。

创建Blob Stores和Repositories仓库

创建Blob Stores

default是默认就有的,创建仓库时一般选择default目录

创建docker-hub:

创建npm-hub

创建仓库

创建daasan-snapshot仓库:

创建daasan-release仓库:

本地的maven安装配置、及idea中的pom.xml配置

maven安装

下载安装包后解压即可,可将安装路径添加到环境变量

maven配置

安装后配置maven中的settings.xml文件

  1. 配置本地仓库所在的路径:

  2. <localRepository>E:/dsinstall/repository929</localRepository>

  3. 配置<servers>节点:

  4. <servers>

  5. <!--第一个nexus-daasan要和下面的mirror中的id一致,代表拉取时也需要进行身份校验-->

  6. <server>

  7. <id>nexus-daasan</id>

  8. <username>username</username>

  9. <password>password</password>

  10. </server>

  11. <server>

  12. <!--这两个是jar上传时候进行的验证,id对应的是pom中id属性的值-->

  13. <id>daasan-releases</id>

  14. <username>username</username>

  15. <password>password</password>

  16. </server>

  17. <server>

  18. <id>daasan-snapshots</id>

  19. <username>username</username>

  20. <password>password</password>

  21. </server>

  22. </servers>

  23. 配置<mirrors>节点:

  24. <mirrors>

  25. <mirror>

  26. <id>nexus-daasan</id>

  27. <name>daasan nexus repository</name>

  28. <url>http://IP地址:8881/repository/daasan-group/\</url>

  29. <mirrorOf>*</mirrorOf>

  30. </mirror>

  31. <mirror>

  32. <id>daasan-releases</id>

  33. <url>http://IP地址:8881/repository/daasan-release/\</url>

  34. <mirrorOf>*</mirrorOf>

  35. </mirror>

  36. <mirror>

  37. <id>daasan-snapshots</id>

  38. <url>http://IP地址:8881/repository/daasan-snapshot/\</url>

  39. <mirrorOf>*</mirrorOf>

  40. </mirror>

  41. <mirror>

  42. <id>aliyunmaven</id>

  43. <mirrorOf>*</mirrorOf>

  44. <name>阿里云公共仓库</name>

  45. <url>https://maven.aliyun.com/repository/public\</url>

  46. </mirror>

  47. </mirrors>

  48. 配置<profiles>节点

  49. <profiles>

  50. <profile>

  51. <!--ID用来确定该profile的唯一标识-->

  52. <id>jdk-1.8</id>

  53. <activation>

  54. <activeByDefault>true</activeByDefault>

  55. <jdk>1.8</jdk>

  56. </activation>

  57. <properties>

  58. <maven.compiler.source>1.8</maven.compiler.source>

  59. <maven.compiler.target>1.8</maven.compiler.target>

  60. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

  61. </properties>

  62. </profile>

  63. <profile>

  64. <id>nexus-pr</id>

  65. <!-- 远程仓库列表 -->

  66. <repositories>

  67. <repository>

  68. <id>nexus-daasan</id>

  69. <name>Nexus Central</name>

  70. <!-- 虚拟的URL形式,指向镜像的URL -->

  71. <url>http://IP地址:8881/repository/daasan-group/\</url>

  72. <layout>default</layout>

  73. <!-- 表示可以从这个仓库下载releases版本的构件-->

  74. <releases>

  75. <enabled>true</enabled>

  76. </releases>

  77. <!-- 表示可以从这个仓库下载snapshot版本的构件 -->

  78. <snapshots>

  79. <enabled>true</enabled>

  80. </snapshots>

  81. </repository>

  82. </repositories>

  83. <!-- 插件仓库列表 -->

  84. <pluginRepositories>

  85. <pluginRepository>

  86. <id>nexus-daasan</id>

  87. <name>Nexus Central</name>

  88. <url>http://IP地址:8881/repository/daasan-group/\</url>

  89. <layout>default</layout>

  90. <snapshots>

  91. <enabled>true</enabled>

  92. </snapshots>

  93. <releases>

  94. <enabled>true</enabled>

  95. </releases>

  96. </pluginRepository>

  97. </pluginRepositories>

  98. </profile>

  99. </profiles>

idea中的pom.xml配置

在根项目路径中的pom.xml文件配置如下:

  1. <!-- 分发配置,在执行mvn deploy后要发布的位置 -->
  2. <distributionManagement>
  3. <repository>
  4. <id>daasan-releases</id>
  5. <name>Daasan Repository</name>
  6. <url>http://IP地址:8881/repository/daasan-release/\</url>
  7. </repository>
  8. <snapshotRepository>
  9. <id>daasan-snapshots</id>
  10. <name>Daasan Snapshot Repository</name>
  11. <url>http://IP地址:8881/repository/daasan-snapshot/\</url>
  12. </snapshotRepository>
  13. </distributionManagement>

这里pom.xml中的id要和maven的setting.xml中<server>节点中的id要相同

将本地的文件deploy到远程仓库

选择root中的deploy,点击运行即可上传到远程仓库中

登录web管理端:http://IP地址:8881/#browse/browse:daasan-snapshot

即可看到刚才上传的文件:

常见问题处理

更改IP端口

打开文件nexus\nexus-3.29.2-02-win64\nexus-3.29.2-02\etc\nexus-default.properties,修改ip端口即可;

设置web管理页面未登录时不能看到里面的文件

去掉勾选即可

将创建的仓库添加到maven-public公共仓库

将nexus做成自启动服务

每次通过nexus.exe /run命令行启动很麻烦,添加nexus到计算机的服务中,命令是:nexus.exe /install 需要管理员权限

相关推荐
jyOverQ1 分钟前
Redis 主从复制、Sentinel 和 Cluster 到底有什么区别?
java·redis·sentinel
青春逝如流水13 分钟前
Java 线程在内存模型(JMM)与 JVM 实现:规范与落地的多元路径
java·开发语言·jvm·多线程·ai文章
wangbing11252 小时前
springboot应用关闭时触发动作
java·spring boot·后端
weixin_460443565 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
海鸥-w8 小时前
什么是AOP
java
Cc.Y8 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck8 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787059 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev9 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
Sarvartha9 小时前
Lambda 表达式和函数式接口
java·开发语言