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 需要管理员权限

相关推荐
又是忙碌的一天2 小时前
Maven基本概念
java·maven
@淡 定2 小时前
JVM内存区域划分详解
java·jvm·算法
❀͜͡傀儡师2 小时前
运维问题排查笔记:磁盘、Java进程与SQL执行流程
java·运维·笔记
篱笆院的狗2 小时前
Java 中如何创建多线程?
java·开发语言
默 语2 小时前
RAG实战:用Java+向量数据库打造智能问答系统
java·开发语言·数据库
醒过来摸鱼2 小时前
Java Compiler API使用
java·开发语言·python
dazhong20122 小时前
Mybatis 敏感数据加解密插件完整实现方案
java·数据库·mybatis
TDengine (老段)2 小时前
TDengine 在智能制造领域的应用实践
java·大数据·数据库·制造·时序数据库·tdengine·涛思数据
Coder_Boy_2 小时前
基于 MQTT 的单片机与 Java 业务端双向通信全流程
java·单片机·嵌入式硬件