赞
踩
目录
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
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 包等。 |
sonatype-work:存放 Nexus 2.x 生成的配置文件、日志文件、以及上传下载的 jar 包等。 |
4、进入 nexus-2.15.1-02/bin/jsw 目录,选择对应的操作系统进入,如 Windows 10 64 位对应的是 windows-x86-64 目录。
windows-x86-64 |
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
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 | 仓库的路径。 |
1、解压后的 sonatype-work 会作为默认工作空间,其中 sonatype-work\nexus\storage 目录下的各个子目录分别对应存储 Nexus 各个仓库存储的组件。
2、即无论是自己上传发布的组件还是私服从中央仓库下载的组件,都会存放到对应的子目录中。
0、maven 私服是搭建在公司局域网内的 maven 仓库,公司内的所有开发团队都可以使用。例如技术研发团队开发了一个基础组件,就可以将这个基础阻件打成 jar 包发布到私服,其他团队成员就可以从私服下载这个ja包到本地仓库并在项目中使用。
1、Maven 配置文件 setting.xml 中配置私服发布上传时访问的账号与密码(Nexus 对于匿名用户只读)。以下内容配置在 <servers> 标签下。
- <!--
- | id:文件内保证唯一,不相互冲突,可以随意定义。项目 pom.xml 中 <distributionManagement><repository>下的ID与这里对应即可。
- | username:私服登陆的账号
- | password:私服登陆的密码
- -->
- <server>
- <id>Releases_Local</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
-
- <server>
- <id>Snapshots_Local</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
2、项目 pom.xml 文件配置私服发布上传的地址。以下内容配置根节点 <project> 下。
- <!--
- repository:表示正式发布版本对应的仓库
- snapshotRepository:表示快照版本对应的仓库
- id:必须与 Maven 配置文件 setting.xml 中配置的 <server> 中 id 一致。
- Maven 在部署组件时,会先根据 id 查找用户名称和密码进行认证和登录,然后将构件部署到对应仓库。
- name:仓库名称,自定义即可。
- url:项目发布上传的实际地址,直接从私服主页复制 Repository Path 路径即可。
- -->
- <distributionManagement>
- <repository>
- <id>Releases_Local</id>
- <name>Nexus Release Repository</name>
- <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
- </repository>
- <snapshotRepository>
- <id>Snapshots_Local</id>
- <name>Nexus Snapshot Repository</name>
- <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
- </snapshotRepository>
- </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> 配置在根节点下。
- <!--声明一个或多个远程仓库-->
- <repositories>
- <!--声明一个 Nexus 私服上的仓库(一个 repository 元素对应一个远程仓库) -->
- <repository>
- <!--仓库的唯一标识-->
- <!--注意:Maven 中央仓库的 id 为 central,如果其他的仓库也使用该 id,就会覆盖中央仓库的配置-->
- <id>nexus</id>
- <!--仓库名称-->
- <name>nexus</name>
- <!--仓库地址-->
- <url>http://localhost:8081/nexus/content/groups/public/</url>
- <!-- 是否开启该仓库的 release 版本下载支持 -->
- <releases>
- <enabled>true</enabled>
- </releases>
- <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <!-- 声明一个或多个远程插件仓库(通常用不着,可以省略不写) -->
- <pluginRepositories>
- <!--声明一个 Nexus 私服上的插件仓库 -->
- <pluginRepository>
- <!--插件仓库 id -->
- <id>nexus</id>
- <!--插件仓库 名称 -->
- <name>nexus</name>
- <!-- 配置的插件仓库的地址 -->
- <url>http://localhost:8081/nexus/content/groups/public/</url>
- <!-- 是否开启该插件仓库的 release 版本下载支持 -->
- <releases>
- <enabled>true</enabled>
- </releases>
- <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
2、方式二: 配置在 Maven 核心文件 setting.xml 中,对本机所有 Maven 项目生效。一个 profile 表示一个环境/配置,定义好之后,使用 activeProfiles 激活需要的配置即可。当本机有 Maven 项目构建时,profile 中的仓库配置就会应用到项目中。
- <profiles>
- <profile>
- <id>nexus_local</id>
- <!--声明一个或多个远程仓库 -->
- <repositories>
- <!-- 声明一个 Nexus 私服上的仓库 -->
- <repository>
- <!--仓库id -->
- <id>nexus</id>
- <!-- 仓库的名称 -->
- <name>nexus</name>
- <!--仓库的地址 -->
- <url>http://localhost:8081/nexus/content/groups/public/</url>
- <!-- 是否开启该仓库的 release 版本下载支持 -->
- <releases>
- <enabled>true</enabled>
- </releases>
- <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <!-- 声明一个或多个远程插件仓库(通常用不着,可以省略不写) -->
- <pluginRepositories>
- <!--声明一个 Nexus 私服上的插件仓库 -->
- <pluginRepository>
- <!--插件仓库 id -->
- <id>nexus</id>
- <!--插件仓库 名称 -->
- <name>nexus</name>
- <!-- 配置的插件仓库的地址 -->
- <url>http://localhost:8081/nexus/content/groups/public/</url>
- <!-- 是否开启该插件仓库的 release 版本下载支持 -->
- <releases>
- <enabled>true</enabled>
- </releases>
- <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
-
- <!--激活指定环境/配置 -->
- <activeProfiles>
- <activeProfile>nexus_local</activeProfile>
- </activeProfiles>
将第三方 Jar 包安装到本地仓库:https://wangmaoxiong.blog.csdn.net/article/details/89521264
1、以 Oracle 的 JDBC 驱动为例,先从官网下载好驱动 jar 包到本地。
1、和'将本地组件上传发布到私服'一样,在 Maven 核心文件 setting.xml 中配置私服发布上传时访问的账号与密码。
- <!--
- | id:文件内保证唯一,不相互冲突,可以随意定义。deploy 命令中的 -DrepositoryId 与这里对应即可。
- | username:私服登陆的账号
- | password:私服登陆的密码
- -->
- <server>
- <id>Thirdparty_Local</id>
- <username>admin</username>
- <password>admin123</password>
- </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 的值,可以自定义,建议与人家官网的一致即可 |
1、除了使用命令行上传部署,直接访问私服上传也是不错的选择。
2、先选中 Nexus 中需要上传部署的仓库,比如 3rd party 仓库,然后在下方选择 Artifact Upload 选项卡,其中 GAV Definition 用于定义上传构件的坐标信息。
A、若组件是通过 Maven 构建的(需要它的 pom.xml 文件),则可以选择 From POM,Nexus 会自动从 pom.xml 文件中获取坐标信息。 |
方式一: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)] 上传组件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。