当前位置:   article > 正文

Maven 私服 Nexus Win 10 安装与快速使用入门_win10 搭建nexus

win10 搭建nexus

目录

Nexus 私服概述

Nexus 私服下载 与 Win10 安装

Nexus 仓库分类与属性

Nexus 仓库对应的磁盘存储路径

将本地组件上传发布到私服

从私服下载组件到本地仓库

将第三方 Jar 包安装到本地仓库

将第三方 Jar 包部署到私服

maven deploy 命令行部署

Nexus 私服 UI 页面部署


Nexus 私服概述

1、Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。

2、主流的 Maven 仓库管理器主要有以下 3 种:Apache Archiva、JFrog Artifactory、Sonatype Nexus。其中,Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。

3、Nexus 分为开源版(OSS)和专业版(Pro),其中开源版足以满足大部分 Maven 用户的需求。

4、Nexus 专业版需要付费购买,它主要包含一些企业级的高级特性,Sonatype Nexus 官方文档

5、目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,目前使用最多,运行最稳定的是 Nexus 2.x,本文以 Nexus 2.x 为例进行演示。

6、Nexus 中文介绍与使用文档:http://c.biancheng.net/nexus/what-is-nexus.html

Nexus 私服下载 与 Win10 安装

1.  进入 Nexus 2.x 下载页面https://help.sonatype.com/repomanager2/download#Download-NexusRepositoryManager2Pro

其中 Pro 下面的是专业版(需要付费),OSS 下面属于开源版(免费使用),.tar.gz 是 Linux 系统版本,.zip 的是 Windows 系统版本。

2、官网直接下载时,需要'良好的网络',否则可能无法下载,建议复制地址后使用迅雷即可轻松下载。

3、将下载的 Nexus 安装包解压到本地磁盘,可获得 nexus-2.15.1-02 和 sonatype-work 两个目录。

nexus-2.15.1-02:存放 Nexus 2.x 运行所需要的文件,如启动脚本、依赖 jar 包等。
    bin:命令中心(启动命令,关闭命令)
    conf :配置中心(管理着仓库列表、日志配置,以及安全设置)
    lib:Nexus 的库文件,Nexus 运行时需要的 jar 包所在的目录
    logs:存放日志文件
    nexus:Nexus 应用程序
    tmp:存放Nexus 运行时产生的临时文件

sonatype-work:存放 Nexus 2.x 生成的配置文件、日志文件、以及上传下载的 jar 包等。

4、进入 nexus-2.15.1-02/bin/jsw 目录,选择对应的操作系统进入,如 Windows 10 64 位对应的是 windows-x86-64 目录。

windows-x86-64
    console-nexus.bat:启动 Nexus 并在 DOS 命令行中展示启动过程。
    install-nexus.bat:将 Nexus 安装为 Windows 服务,开机自动启动。
    start-nexus.bat:启动 Nexus。
    stops-nexus.bat:停止 Nexus。
    uninstall-nexus.bat:与 install-nexus.bat 相对应,负责卸载 Nexus 服务。

5、以管理员身份运行 install-nexus.bat 安装 Nexus 服务(如果失败可以查看log目录下的日志)。

6、以管理员身份运行 start-nexus.bat 启动服务(如果失败可以查看log目录下的日志)

7、访问 http://localhost:8081/nexus,能打开页面,则表示服务启动成功,否则表示服务启动失败。(访问端口可以在 nexus-2.15.1-02\conf\nexus.properties 配置文件中修改)

8、点击首页右上角的 [Log In]按钮,输入用户名和密码(默认为 admin/admin123 ),即可登陆

9、nexus-2.15.1 下载与 Win10 安装演示 GIF:images/Nexus 私服下载 与 Win10 安装.gif · 汪少棠/material - Gitee.com

Nexus 仓库分类与属性

1、点击左边导航栏中的 Repositories 即可看到 Nexus 自带了 6 个内置仓库以及一个仓库组。

仓库名称说明
Public Repositories该仓库组将所有存储策略为 Release 的仓库聚合并通过统一的地址提供服务。
3rd party策略为 Release 的宿主仓库,用来部署第三方发布版本组件,这些组件一般无法从任何远程仓库中获得。比如自己公式内部部署 Oracle。
apache-snapshots代理 Apache 中央仓库,其策略为快照版本,https://repository.apache.org/snapshots/
Central用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件。
Central M1 shadow兼容 Maven1 版本的 jar 或者插件,不再使用。
Releases策略为 Release 的宿主仓库,用来部署公司或组织内部的正式版本构件。
Snapshots策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件。

2、在仓库列表中,每个仓库都具有一系列属性:

Type仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。

group(仓库组)

用来合并多个 hosted/proxy 仓库,为它们提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的组件。

hosted(宿主仓库)

又称 Nexus 本地仓库,用于部署本地项目所产生的组件,包括Releases 和 Snapshots 两部分,前者为公司内部发布版本仓库、后者为公司内部测试版本仓库。

proxy(代理仓库)

用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。

用户连接私服,私服自动去中央仓库下载 jar 包或者插件,然后提供给用户的同时也会留在私服中。

virtual(虚拟)兼容 Maven1 版本的 jar 或者插件,不再使用。
Format仓库的格式。
Policy仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
Repository Status仓库的状态。
Repository Path仓库的路径。

Nexus 仓库对应的磁盘存储路径

1、解压后的 sonatype-work 会作为默认工作空间,其中 sonatype-work\nexus\storage 目录下的各个子目录分别对应存储 Nexus 各个仓库存储的组件。

2、即无论是自己上传发布的组件还是私服从中央仓库下载的组件,都会存放到对应的子目录中。

将本地组件上传发布到私服

0、maven 私服是搭建在公司局域网内的 maven 仓库,公司内的所有开发团队都可以使用。例如技术研发团队开发了一个基础组件,就可以将这个基础阻件打成 jar 包发布到私服,其他团队成员就可以从私服下载这个ja包到本地仓库并在项目中使用。

1、Maven 配置文件 setting.xml 中配置私服发布上传时访问的账号与密码(Nexus 对于匿名用户只读)。以下内容配置在 <servers> 标签下。

  1. <!--
  2. | id:文件内保证唯一,不相互冲突,可以随意定义。项目 pom.xml 中 <distributionManagement><repository>下的ID与这里对应即可。
  3. | username:私服登陆的账号
  4. | password:私服登陆的密码
  5. -->
  6. <server>
  7. <id>Releases_Local</id>
  8. <username>admin</username>
  9. <password>admin123</password>
  10. </server>
  11. <server>
  12. <id>Snapshots_Local</id>
  13. <username>admin</username>
  14. <password>admin123</password>
  15. </server>

2、项目 pom.xml 文件配置私服发布上传的地址。以下内容配置根节点 <project> 下。

  1. <!--
  2. repository:表示正式发布版本对应的仓库
  3. snapshotRepository:表示快照版本对应的仓库
  4. id:必须与 Maven 配置文件 setting.xml 中配置的 <server> 中 id 一致。
  5. Maven 在部署组件时,会先根据 id 查找用户名称和密码进行认证和登录,然后将构件部署到对应仓库。
  6. name:仓库名称,自定义即可。
  7. url:项目发布上传的实际地址,直接从私服主页复制 Repository Path 路径即可。
  8. -->
  9. <distributionManagement>
  10. <repository>
  11. <id>Releases_Local</id>
  12. <name>Nexus Release Repository</name>
  13. <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
  14. </repository>
  15. <snapshotRepository>
  16. <id>Snapshots_Local</id>
  17. <name>Nexus Snapshot Repository</name>
  18. <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
  19. </snapshotRepository>
  20. </distributionManagement>

3、注意事项:pom.xml 文件中 <version>xxx</version> 版本定义时:

A、如果版本号含 Snapshot 字样,如 <version>2.3.0-SNAPSHOT</version>,则默认自动发布到快照仓库(不会进正式仓库).
B、如果版本号含 Release 字样,如 <version>2.3.0-RELEASE</version>,则默认自动发布到正式仓库(不会进快照仓库).
C、如果版本号不含特殊字符,如 <version>2.3.0(build20220728)</version>,则默认自动发布到正式仓库(不会进快照仓库).

4、最后可以使用命令行 'mvn clean deploy',或者 IDEA 工具将组件发布上传到私服。

从私服下载组件到本地仓库

1、方式一配置在 Maven 项目的 pom.xml 中,对当前项目生效。<repositories> 配置在根节点下。

  1. <!--声明一个或多个远程仓库-->
  2. <repositories>
  3. <!--声明一个 Nexus 私服上的仓库(一个 repository 元素对应一个远程仓库) -->
  4. <repository>
  5. <!--仓库的唯一标识-->
  6. <!--注意:Maven 中央仓库的 id 为 central,如果其他的仓库也使用该 id,就会覆盖中央仓库的配置-->
  7. <id>nexus</id>
  8. <!--仓库名称-->
  9. <name>nexus</name>
  10. <!--仓库地址-->
  11. <url>http://localhost:8081/nexus/content/groups/public/</url>
  12. <!-- 是否开启该仓库的 release 版本下载支持 -->
  13. <releases>
  14. <enabled>true</enabled>
  15. </releases>
  16. <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
  17. <snapshots>
  18. <enabled>true</enabled>
  19. </snapshots>
  20. </repository>
  21. </repositories>
  22. <!-- 声明一个或多个远程插件仓库(通常用不着,可以省略不写) -->
  23. <pluginRepositories>
  24. <!--声明一个 Nexus 私服上的插件仓库 -->
  25. <pluginRepository>
  26. <!--插件仓库 id -->
  27. <id>nexus</id>
  28. <!--插件仓库 名称 -->
  29. <name>nexus</name>
  30. <!-- 配置的插件仓库的地址 -->
  31. <url>http://localhost:8081/nexus/content/groups/public/</url>
  32. <!-- 是否开启该插件仓库的 release 版本下载支持 -->
  33. <releases>
  34. <enabled>true</enabled>
  35. </releases>
  36. <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
  37. <snapshots>
  38. <enabled>true</enabled>
  39. </snapshots>
  40. </pluginRepository>
  41. </pluginRepositories>

2、方式二 配置在 Maven 核心文件 setting.xml 中,对本机所有 Maven 项目生效。一个 profile 表示一个环境/配置,定义好之后,使用 activeProfiles 激活需要的配置即可。当本机有 Maven 项目构建时,profile 中的仓库配置就会应用到项目中。

  1. <profiles>
  2. <profile>
  3. <id>nexus_local</id>
  4. <!--声明一个或多个远程仓库 -->
  5. <repositories>
  6. <!-- 声明一个 Nexus 私服上的仓库 -->
  7. <repository>
  8. <!--仓库id -->
  9. <id>nexus</id>
  10. <!-- 仓库的名称 -->
  11. <name>nexus</name>
  12. <!--仓库的地址 -->
  13. <url>http://localhost:8081/nexus/content/groups/public/</url>
  14. <!-- 是否开启该仓库的 release 版本下载支持 -->
  15. <releases>
  16. <enabled>true</enabled>
  17. </releases>
  18. <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
  19. <snapshots>
  20. <enabled>true</enabled>
  21. </snapshots>
  22. </repository>
  23. </repositories>
  24. <!-- 声明一个或多个远程插件仓库(通常用不着,可以省略不写) -->
  25. <pluginRepositories>
  26. <!--声明一个 Nexus 私服上的插件仓库 -->
  27. <pluginRepository>
  28. <!--插件仓库 id -->
  29. <id>nexus</id>
  30. <!--插件仓库 名称 -->
  31. <name>nexus</name>
  32. <!-- 配置的插件仓库的地址 -->
  33. <url>http://localhost:8081/nexus/content/groups/public/</url>
  34. <!-- 是否开启该插件仓库的 release 版本下载支持 -->
  35. <releases>
  36. <enabled>true</enabled>
  37. </releases>
  38. <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
  39. <snapshots>
  40. <enabled>true</enabled>
  41. </snapshots>
  42. </pluginRepository>
  43. </pluginRepositories>
  44. </profile>
  45. </profiles>
  46. <!--激活指定环境/配置 -->
  47. <activeProfiles>
  48. <activeProfile>nexus_local</activeProfile>
  49. </activeProfiles>

将第三方 Jar 包安装到本地仓库

 将第三方 Jar 包安装到本地仓库:https://wangmaoxiong.blog.csdn.net/article/details/89521264

将第三方 Jar 包部署到私服

1、以 Oracle 的 JDBC 驱动为例,先从官网下载好驱动 jar 包到本地。

maven deploy 命令行部署

1、和'将本地组件上传发布到私服'一样,在 Maven 核心文件 setting.xml 中配置私服发布上传时访问的账号与密码

  1. <!--
  2. | id:文件内保证唯一,不相互冲突,可以随意定义。deploy 命令中的 -DrepositoryId 与这里对应即可。
  3. | username:私服登陆的账号
  4. | password:私服登陆的密码
  5. -->
  6. <server>
  7. <id>Thirdparty_Local</id>
  8. <username>admin</username>
  9. <password>admin123</password>
  10. </server>

2、使用 maven deploy 命令进行部署(会直接部署到私服上,不会保留到本地仓库)。

mvn deploy:deploy-file -Dfile=C:\Users\Think\Downloads\ojdbc8.jar -DgroupId=com.oracle.jdbc -DartifactId=ojdbc8 -Dversion=19.15.0.0 -Dpackaging=jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=Thirdparty_Local

-DgroupId:指定 groupId 的值,可以自定义,建议与人家官网的一致即可
-DartifactId:指定 artifactId 的值,可以自定义,建议与人家官网的一致即可
-Dversion:指定 version 的值,可以自定义,建议与人家官网的一致即可,也可以打开 ojdbc8.jar ,其中的 MANIFEST.MF 文件中也可以看到版本号
-Dpackaging:指定打包的类型,如 jar、war 包
-DgeneratePom:指定是否生成 pom.xml 文件,指定让它生成
-Dfile:需要被部署的源 jar 包文件路径
-Durl:私服仓库地址,可以是任意仓库,不过第三方组件通常放在 3rd party 仓库中。
-DrepositoryId:仓库Id,对应 setting.xml 中 server 的 id 值。

部署组件时,先根据对应的 DrepositoryId 查找用户名称和密码进行认证和登录,然后将组件部署到对应仓库。

Nexus 私服 UI 页面部署

1、除了使用命令行上传部署,直接访问私服上传也是不错的选择。

2、先选中 Nexus 中需要上传部署的仓库,比如 3rd party 仓库,然后在下方选择 Artifact Upload 选项卡,其中 GAV Definition 用于定义上传构件的坐标信息。

A、若组件是通过 Maven 构建的(需要它的 pom.xml 文件),则可以选择 From POM,Nexus 会自动从 pom.xml 文件中获取坐标信息。
B、若组件来自第三方,本地仓库没有,如 Oracle 的 Jdbc 驱动,则只能选择 GAV Parameters,手动定义坐标信息。

方式一:From POM 自动识别组件坐标信息

1、如果组件是通过 Maven 构建的,则通过它的 pom.xml 文件,Nexus 就能自动从文件中获取坐标信息。找到它的 pom.xml 文件(比如解压、本地仓库获取、甚至是手写一个含有坐标信息的也行)。

2、操作步骤:GAV Definition:选择 From POM -> Select POM to Upload:选择需要部署组件的 pom.xml ->  Select Artifact(s) to Upload:选择需要部署的组件 Jar 包 -> 点击[Add Artifact]按钮添加组件 -> 最后点击 [Upload Artifact(s)] 上传组件。

方式二:GAV Paramters 手动定义组件坐标信息

1、Maven 构建的项目既可以选择 From POM 自动识别坐标信息,也能手动定义坐标信息,但是非 Maven 构建的项目(没有 pom.xml 文件的组件),则手动指定即可。

2、操作步骤:GAV Definition:选择 GAV Parameters -> Group:定义 groupId->Artifact:定义 artifactId -> Version:定义版本号->Packaging:打包类型(默认为jar)-> Select Artifact(s) to Upload:选择需要部署的组件 Jar 包 -> 点击[Add Artifact]按钮添加组件 -> 最后点击 [Upload Artifact(s)] 上传组件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/124647
推荐阅读
相关标签
  

闽ICP备14008679号