项目管理工具:Maven-Nexus(下)
前言
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服相当于一个远程仓库,当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。使用私服的好处:
- 建立公共仓库
- 加速构建
- 节省带宽
- 提高稳定性,增强控制
介绍
Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版(收费)
Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,Nexus使用ExtJS 来开发界面,占用内存小(28 M 左右),安全控制,等特点。
官网下载地址:https://help.sonatype.com/repomanager3(注意直接点击下载可能访问不了,可以通过迅雷下载)
安装
我们以Nexus 3.41.1版本进行讲解,在此之前你一定要确保你已经安装了JDK1.8。如图所示,对应系统下载
windows
下载完,解压,目录结构如下:
- nexus-3.41.1-01目录:配置文件、启动脚本、依赖Jar包等。
- sonatype-work目录:配置文件、日志等。
点击进入nexus-3.41.1-01目录,可以看到很多文件夹,如图
- bin目录:该目录包含 nexus 启动脚本本身以及与启动相关的配置文件。
- etc目录:此目录包含存储库管理器的主要运行时配置和自定义。配置运行时环境中进一步解释了这些文件 。
- lib目录:此目录包含与 Apache Karaf 相关的二进制库。
- public目录:此目录包含应用程序的公共资源。
- system目录:此目录包含构成应用程序的所有组件和插件。
启动
在 Windows 平台上运行 Nexus Repository 的启动脚本是 bin目录下nexus.exe。 启动并生成一些初始化文件,比如:用户密码等。该脚本包括用于启动和停止服务的标准命令。
nexus.exe /run
一旦日志显示消息“Started Sonatype Nexus”
,就可以访问该应用程序。可以使用CTRL+C适当的控制台停止正在运行的应用程序(这仅仅是启动了一个程序而已,并没有将其作为服务)。
输入访问地址:http://localhost:8081/,如图所示
除此之外还可以使用/start
、/stop
、/restart
、/force-reload
、/status
命令将存储库管理器管理为一个服务。
它还包含 用于创建install 和 uninstall 删除服务配置的命令。您可以使用以下命令创建服务配置:
nexus.exe /install [optional-service-name]
注意,用管理员权限启动命令窗口,否则会报:Could not open SCManager。
然后右击启动服务
新服务 nexus 默认命名。它在 Windows 控制台应用程序中可用于管理 Windows 服务等服务。您可以在那里启动、停止和重新启动服务,也可以将其配置为作为操作系统启动的一部分启动。或者,您可以在命令行上管理服务:
nexus.exe /start [optional-service-name]
nexus.exe /stop [optional-service-name]
nexus.exe /uninstall [optional-service-name]
然后访问页面:http://localhost:8081/,这下无论电脑关机、重启还是睡眠,都会自动开启服务,可以访问。
linux
或许你有办法使用wget
命令下载,下载地址:
wget https://download.sonatype.com/nexus/3/nexus-3.41.1-01-unix.tar.gz
由于服务器连接下载地址失败,如图
我们先用迅雷下载好,传到服务器上去,使用命令,解压安装包
tar -zxvf nexus-3.41.1-01-unix.tar.gz
如图所示,红框标注的地方就是安装包解压后的文件
启动
和windows一样,在 bin目录下有nexus, 启动并生成一些初始化文件,比如:用户密码等。 该脚本包括用于启动和停止服务等标准命令。
./nexus run
一旦日志显示消息“Started Sonatype Nexus”
,就可以访问该应用程序。可以使用CTRL+C适当的控制台停止正在运行的应用程序(这仅仅是启动了一个程序而已,并没有将其作为服务)。
输入访问地址:http://IP地址:8081/,可能会连接失败,如果你使用的是阿里云或腾讯云的云服务,你需要配置指定端口,才行。以腾讯云为例,如图所示
然后再次访问
除了run
命令外,还有start
启动、stop
停止、run
运行、run-redirect
运行重定向、status
状态、restart
重启、force-reload
重新加载,命令。大多数情况下我们使用./nexus start
命令启动服务,这样就不会占用当前窗口。
除此之外你还可以设置开机自动启动:
- 先使用命令
cd /etc/init.d/
到达目录下。 - 使用命令
touch nexus
创建一个脚本。 - 添加脚本内容,注意修改实际访问路径
#!/bin/bash
#chkconfig:2345 20 90
#description:nexus
#processname:nexus
export JAVA_HOME=/usr/local/jdk1.8.0_60
case $1 in
start) su root /usr/local/nexus-3.41.1-01/bin/nexus start;;
stop) su root /usr/local/nexus-3.41.1-01/bin/nexus stop;;
status) su root /usr/local/nexus-3.41.1-01/bin/nexus status;;
restart) su root /usr/local/nexus-3.41.1-01/bin/nexus restart;;
*) echo "Usage: nexus {start|stop|run|run-redirect|status|restart|force-reload}"
esac
- 设置脚本权限:
chmod 744 /etc/init.d/nexus
。 - 向系统添加服务:
chkconfig --add nexus
。 - 设置nexus服务自启动:
chkconfig nexus on
,除此之外还有其它命令,如下所示:
#关闭nexus服务自启动
chkconfig nexus off
#删除nexus服务在chkconfig上的管理
chkconfig –del nexus
简单介绍下chkconfig
命令主要用于检查,设置系统的各种服务。
Chkconfig --list #查看chkconfig所有的服务
Chkconfig --add name #增加一项新的服务
Chkconfig --del name #删除服务
Chkconfig [--level levels] name #设置某一服务在指定的运行级是被启动还是停止或者重置的
#0:关机
#1:单用户模式
#2:无网络连接的多用户命令行模式
#3:有网络连接的多用户命令行模式
#4:保留,未使用
#5:带图形界面的多用户模式
#6:重新启动
语法格式:
Chkconfig [–add] [–del] [–list] [系统服务] 或 chkconfig [–level <等级代号>] [系统服务] [on/off/reset]
示例:
Chkconfig --add nexus 或 chkconfig --level 345 nexus on
登录
为确保系统以安全状态开始,Nexus Repository Manager 在系统初始启动期间生成一个唯一的随机密码,并将其写入sonatype-work/nexus3
名为admin.password文件(这里以windows进行讲解,文件路径与Linux一致)。
在执行nexus.exe /run
命令(Linux命令./nexus run
)时,会重新生成admin.password文件,注意:不要随便把文件里的随机密码手动给改了,否则你会登不上去,要重新生成文件。
输入用户名密码登录
然后会提示修改密码
然后要求选择是否允许匿名访问,这里选的是不允许
然后到第四步,已经完成了nexus的安装和最基础的配置,nexus默认会创建一系列仓库。不仅可以通过用户界面手动更改此密码,还通过 REST API 以编程方式更改。
修改运行环境
打开bin目录下nexus.vmoptions文件,可配置JVM运行参数。
比如:启动时,会报内存不足的错误,导致启动失败,如图
将数值改小,即可
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=512m
修改端口号
打开etc目录下nexus-default.properties文件,可配置端口号等信息。
比如:将端口号改为8082,访问地址改为/index
。这样访问的完整路径为:http://localhost:8082/index
首页菜单
Search
搜索菜单。分别有按属性搜索、自定义标准搜索、Maven坐标搜索、NuGet库搜索。
(1)属性搜索:根据属性搜索组件。
Keyword是用于搜索的字符串,其中 返回Format、 Group、 Name、 Version 和所有其他组件元数据值中的匹配项。
(2)自定义标准搜索:自定义标准搜索组件。
(3)Maven坐标搜索:根据Maven坐标属性搜索组件。
(4)NuGet库搜索:根据NuGet库搜索组件(Nuget是一个.NET平台下的开源的项目)。
除此之外,在搜索组件的时候是可以通过模糊查询的,如图所示
Browse
浏览存储库和存储库组。
在仓库列表中,每个仓库都具有一系列属性:
- name属性:name是将在 URL 中用于访问存储库的标识符,必须是唯一的并且是必需的。
(1)maven-central:主要对Maven中央仓库的存储。
(2)maven-public:主要对maven2格式存储库的存储库组,它将maven-central、 maven-releases 和 maven-snapshots结合在一起。
(3)maven-releases:主要存放releasse(发布)版本的Jar包管理。
(4)maven-snapshots:主要存放releasse(快照)版本的Jar包管理。
(5)nuget-:其它带有nuget开头的文件,主要存放.NET开发的组件。
- type属性:存储库的类型。分别有三种类型:代理仓库(proxy)、宿主仓库(hosted)、仓库组(group)。
(1)代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。
(2)宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。
(3)仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。
- Format属性:用于存储在存储库中的存储库格式,其值例如 maven2 、 nuget、等 。
- Status属性:存储库的状态。online(在线)、Online - Ready to Connect(在线-准备连接到远程)、Online - Remote Available(在线-远程可用)。
- URL属性:复制按钮会提示一个对话框,其中包含公开存储库的直接 URL 路径。
- Health check属性:运行状况检查 -显示来自先前运行的存储库运行状况检查的存储库运行状况统计信息 或用于开始分析的按钮。
我们点开一个资源库,找一个Jar包,可以看到组件的信息,如图所示
Upload
上传内容到资源库。
进入maven-releases,上传Jar文件,填写坐标信息,点击Uplouad按钮,如图
然后会弹出消息框,确认上传成功,如果您单击此链接,您将被带到搜索功能。
除了上传Jar文件,还可以上传pom文件,如图所示
Nexus知道它应该从 pom 文件中获取坐标。
设置菜单管理
位于设置页的左侧面板上的管理菜单包含以下部分:
Repository
存储库部分 允许您管理所有存储库和相关配置,例如路由和目标。
- Repositories资源库:存储库列表上方的创建存储库按钮会触发一个对话框,以选择新存储库的配方。该配方将存储库的格式和类型组合到一个选择中。根据您的存储库管理器版本和安装的插件,可用选项列表会有所不同。
选择仓库存储类型
配置资源信息,其它的配置信息,有兴趣的可以自己了解。
点击创建按钮,即可。当然创建完成后也可以修改,点击指定资源库后,如图
除了修改基本配置外,也可以删除资源库,重建索引等功能。
- Blob Stores存储:通过代理存储库下载或发布到托管存储库的二进制资产存储在附加到这些存储库的 blob 存储中。
点击创建按钮
有两种类型,一种是file类型:在基于文件系统的存储中;一种是S3类型:在 AWS S3 云存储中存储 blob。我们以file类型进行讲解。
输入完内容后,点击save按钮,在服务器的/usr/local/sonatype-work/nexus3/blobs
目录下,可以看到对应的文件。
以后再创建资源时,就可以选择新的存储。
- Proprietary Repositories专用存储库:有一种软件供应链攻击利用了许多组件在其坐标中没有命名空间并且包管理工具可以从多个来源获取组件的情况。简而言之,您将 Nexus Repository Manager 配置为将所有专有组件的名称提交给 IQ Server。然后,IQ Server 中的策略将标记从代理存储库请求的任何组件,该组件的名称与您的任何专有组件的名称相匹配,从而允许防火墙隔离该组件。
- Content Selectors内容选择器:内容选择器为您提供了一种从存储库中选择特定内容的方法。存储库内容根据用 CSEL(内容选择器表达式语言)编写的表达式进行评估。
点击创建按钮,然后填好信息,指定表达式内容后,点击preview按钮,可以查找到匹配的内容,如图所示
- Cleanup Policies清理策略:Nexus 存储库清理功能是一种使用自动化策略从存储库中删除不需要的组件的方法。
点击创建按钮,然后填好信息,勾选清理标准二选一填写天数,点击preview按钮,可以查找到匹配的内容,如图所示
- Routing Rules路由规则:路由就像过滤器,您可以在安全访问和一般组件检索方面应用于组。您可能希望阻止它向存储库发出某些请求。
点击创建路由规则,然后填好信息,点击Test按钮可以测试规则是否生效,如图所示
Mode有两种选择,允许和禁止,如图所示
每个路由规则必须定义一个或多个匹配器;这些必须是 Java 允许的有效正则表达式。
Security
此部分提供对与用户身份验证和授权相关的所有配置功能的访问,包括 权限、 角色、 用户,以及 LDAP、 Atlassian Crowd (仅限专业版)、 SSL 证书 和 用户令牌 (仅限专业版)。
- Privileges权限:权限只能分配给角色,它们定义了角色可以针对特定功能执行的操作。Nexus Repository 附带一组无法修改的核心权限。Nexus Repository 会在创建新存储库时自动为其添加权限。
(1)name属性:名称是唯一标识符。默认包含的权限以nx- 为前缀。您自己创建的权限只能由字母、数字、下划线 (_)、连字符 (-) 和点 (.) 组成。权限名称不能以下划线或点 (.) 开头。
(2)Description属性:描述权限含义。
(3)type属性:权限类型。主要分为对数据的操作和资源操作。
类型 | 权限段 | 适用的范围 | 描述 |
---|---|---|---|
application | nexus:{name}:{actions} | create,read,update,delete | 应用程序类型权限是最常见的内置权限,用于控制对管理 UI 中特定产品功能区域的访问。 例如: nexus:blobstores:create,read 表示允许创建和读取 blobstores |
repository-admin | nexus:repository-admin:{format}:{repository}:{actions} | browse,read,edit,add,delete | 存储库管理员权限控制特定存储库或存储库格式的配置管理。 例如: nexus:repository-admin:nuget:nuget.org-proxy:browse,read 表示允许查看名为nuget.org-proxy的nuget格式存储库的存储库配置 |
repository-content-selector | nexus:repository-content-selector:{selector}:{format}:{repository}:{actions} | browse,read,edit,add,delete | 存储库内容选择器权限通过内容选择器提供对存储库中内容的访问的细粒度控制。 例如: nexus:repository-content-selector:*:maven2:*:read 表示允许用户读取与为maven2格式定义的内容选择器匹配的任何内容。 |
repository-view | nexus:repository-view:{format}:{repository}:{actions} | browse,read,edit,add,delete | 存储库查看权限控制对特定存储库或存储库格式中包含的所有内容的一般访问。 例如: nexus:repository-view:maven2:central:browse,read 表示允许在名为central的maven2格式存储库中浏览和查看内容 |
script | nexus:script:{script name}:{actions} | browse,read,edit,add,delete,run | 脚本权限控制对使用与 Groovy 脚本相关的 REST API 的访问,如REST 和集成 API中所述。这些权限不控制一般 REST API 访问。 例如 nexus:script:*:read 表示允许对任何名称的所有脚本进行读取访问;nexus:script:my-uploaded-script:run 表示允许调用用户运行(执行)名为my-uploaded-script 的脚本 |
wildcard | * | 所有 | 通配符权限允许使用一系列自由格式的段来构建权限字符串。所有其他特权类型都是通配符特权的更具体的段形式。默认情况下,仅包含一个名为nx-all 的通配符权限,其权限为nexus:* ,可以访问所有功能。 |
(4)Permission权限:可供选择的操作是 add新增资源库、 browse查看资源库列表、 create创建数据、 delete删除、 edit编辑数据、 read查看资源库内容、 update资源库配置权限和 * 所有操作。
点击左上角Create Privileges按钮创建权限,如图所示
选择任意权限的类型,填写好信息,创建成功后可以修改,也可以点击左上角按钮删除,如图所示
- Roles角色:角色将权限聚合到相关上下文中,甚至可以分组以创建更复杂的角色。您无需将单独的权限分配给各个用户,而是将权限分配给角色,以便更轻松地管理需要类似权限集的用户。
点击Create role按钮,创建一个新角色,角色类型分为两种:创建内部角色和外部组映射到 Nexus 角色,如图所示
我们以内部角色讲解,填写好信息后,点击创建,如图所示
保存后,可以对角色进行编辑、删除操作。
- Users用户:用户是附加到单个电子邮件和密码的单个 Nexus 存储库帐户。
点击Create User按钮,创建用户,填写信息后,如图所示
- Anonymous Access匿名访问:配置对服务器内容的匿名访问。
- LDAP轻量目录访问协议:可以使用轻量级目录访问协议 (LDAP) 通过提供 LDAP 支持的外部系统(例如 Microsoft Exchange/Active Directory、OpenLDAP、ApacheDS 等)进行身份验证。
有兴趣的自行了解。
- Realms邻域:Nexus Repository 中的领域部分允许您激活用于身份验证和授权的安全领域并确定其优先级。
默认使用的内置领域。它们允许存储库管理器管理安全设置,而无需额外的外部系统。
从活动部分删除所有领域会阻止任何用户访问存储库管理器,包括任何管理访问权限,并且必须避免。
- SSL Certificates证书:如果你使用的HTTPS 的远程代理存储库,使用安全套接字层 (SSL) 与存储库管理器通信是一项重要的安全功能和推荐的最佳实践。
以Load from server讲解,如图所示
点击Load from server按钮,可看到详细信息,如图所示
点击Add按钮添加到信任库,如果填错了,点击刚才创建的记录,删除即可。
IQ Server
IQ Server项目(对具有nx-all或 nx-settings 权限的 用户可见 )允许您配置 Nexus Repository 与 Nexus IQ Server 的连接。Nexus IQ 服务器文档中提供了更多文档(不免费,不做讲解)。
Support
访问允许您成功管理和监视存储库管理器的许多功能,例如 日志记录 和 系统信息。
- Logging日志记录:日志功能视图允许您管理预配置的记录器并创建新的记录器。
点击Reset按钮可以重置默认级别,也将删除没有默认记录器配置的自定义记录器。
点击Create Logger按钮,可以创建新的记录器级别,填写完信息,如图所示
其中的日志级别有多个:
(1) TRACE:这是最详细、最详细的日志记录级别;它详细描述了事件代码执行的每一步。
(2) DEBUG:这是第二详细和详细的日志记录级别。它提供了用于调试的细粒度信息,对于日常使用来说过于冗长。
(3) INFO:这种级别的日志记录提供了有关事件的信息(例如,应用程序进入某个状态,用户请求授权)。此级别纯粹提供信息,在正常操作中可以忽略。
(4) WARN:这一级别表示应用程序中发生了意外,但主要特性仍在运行。这并不意味着应用程序失败,但它确实表明存在可能导致某个进程中断的问题。
(5) ERROR:此级别表示应用程序遇到了妨碍正常功能的问题。
(6) OFF:关闭日志级别。
- Logs日志查看:根据需要配置日志记录后,您可以通过日志页面中的用户界面查看和下载日志。
此屏幕上的表格包含可用的关系、审计、集群和任务日志。选择特定的日志文件以查看其内容。下图显示了用户界面中显示的示例 nexus.log 文件。
- Status状态检查:系统状态检查。
- Support ZIP文件:创建一个 ZIP 文件,其中包含有关您的服务器的有用支持信息。
点击Create support ZIP按钮,生成文件名称、大小等信息。
点击下载,输入密码,即可。
- System Information系统信息:包含资源库、Java虚拟机、操作系统等信息
System
用于启动和运行存储库管理器的一般配置,例如 HTTP 或 电子邮件服务器 设置, 以及 定期运行的功能 和 任务以及其他配置。
- API接口文档:以编程方式与 Nexus Repository Manager 交互。
- Bundles捆绑:为后端提供更多功能,例如支持新的存储库格式、组件的特定行为、新任务和任何其他附加功能以及新的用户界面组件和修改。该功能封装在许多 OSGi 包中。每个版本都由许多提供特定功能的捆绑包组成。
- Capabilities能力:由于 Nexus Repository 是一个具有大量功能的复杂系统,因此有些功能没有专用的始终可见的 UI 元素来配置它们。
点击Create capabilitles按钮,可以创建你需要的能力类型,如图所示
- Email Server电子邮件服务:存储库管理器可能出于多种原因发送电子邮件消息。为了传递这些消息,你需要配置你的邮件信息。
如果你需要SSL验证可以勾选Use the Nexus truststore和SSL/TLS options选项,配置好参数后,您可以使用 Verify email server 按钮来确认配置的参数以及与服务器的成功连接。系统会要求您提供应接收测试电子邮件的电子邮件地址。成功发送在消息中得到确认。
- HTTP请求代理配置:存储库管理器使用 HTTP 请求从远程服务器获取内容。在某些情况下,需要对这些请求进行定制。许多组织使用代理服务器处理任何出站 HTTP 网络流量。从存储库管理器到这些代理服务器的连接需要配置为允许它访问远程存储库。
- Licensing许可:再专业版本中,你需要上传许可证才能使用。
- Nodes节点:通过激活只读模式来保护服务器的数据库免受写访问。这允许您在执行系统维护时避免修改服务器配置和 blob 存储。
点击左上角Enable read-only model按钮启用。
- Tasks任务:存储库管理器允许您安排维护任务的执行。这些任务可以执行将应用于所有存储库或按可配置计划应用于特定存储库的定期维护步骤,或者只是执行其他系统维护。
(1)name属性:用户定义的任务名称,用于在用户界面和日志文件中识别它。
(2)type属性:计划任务执行的操作类型。
(3)Status属性:任务可以是 Waiting for their next run 、 current Running或Disabled。
(4)Schedule属性:显示任务频率,例如Daily、Monthly、Manual等。
(5)Next run属性:此列根据配置的计划显示下一次执行任务的日期和时间。
(6)Last run属性:最后一次执行时间。
(7)Last result属性:最后一次执行结果。
点击Create task按钮,跳到选择类型页面,选择指定类型,如图所示
创建任务,填写内容,点击Create task按钮,如图所示
创建成功后,可以点击创建的任务手动执行或删除任务,如图所示
Maven配置Nexus
上传Jar包
Nexus 中增加了权限认证,Nexus 对于匿名用户是只读的,若想部署构件到 Nexus 中,则需要在 setting.xml 中配置如下认证信息,示例代码如下:
<servers>
<!--声明一个或多个认证信息,可以通过id区分-->
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
日常开发中,快照版本构件可以直接部署到 Nexus 中策略为 Snapshot 的宿主仓库中,而最终发布的版本则应该部署到 Nexus 中策略为 Release 的宿主仓库中。
pom.xml文件,示例代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.study.test</groupId>
<artifactId>helloMaven</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>helloMaven-common</module>
<module>helloMaven-server</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<distributionManagement>
<!--发布资源库-->
<repository>
<id>nexus</id>
<name>Local Nexus Repository</name>
<url>http://127.0.0.78:8081/repository/maven-releases/</url>
</repository>
<!--快照资源库-->
<snapshotRepository>
<id>nexus</id>
<name>Local Nexus Repository</name>
<url>http://127.0.0.78:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
注意:以上配置中,setting.xml文件中的server 元素中的 id 必须和 pom.xml 中 distributionManagement 元素对应仓库的 id 保持一致(可以用同一个id,也可多个不同id)。Maven 在部署构件时,会先根据 id 查找用户名称和密码进行认证和登录,然后将构件部署到对应得宿主仓库。
执行mvn clean deploy
或mvn deploy
命令,如图所示
去Nexus的maven-snapshots资源库,查看是否上传成功,如图所示
下载Jar包
除了上传Jar包外,当然还可以下载Jar包。可以在pom.xml中配置,也可以再setting.xml中配置,我们讲解最简单setting.xml中配置,这样只需要配置一个文件就行。
现在Nexus上有一个log4j的包,我们把它下载到本地,直接复制右边Usage标签的内容,即可。
pom.xml文件,示例代码如下:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
setting.xml文件,示例代码如下:
<profiles>
<profile>
<id>nexus</id>
<!--声明一个或多个远程仓库 -->
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://127.0.0.78:8081/repository/maven-snapshots/</url>
<!-- 是否开启该仓库的 release 版本下载支持 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启该仓库的 snapshot 版本下载支持 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 声明一个或多个远程插件仓库 -->
<pluginRepositories>
<!--声明一个 Nexus 私服上的插件仓库 -->
<pluginRepository>
<id>nexus</id>
<name>nexus</name>
<url>http://127.0.0.78:8081/repository/maven-snapshots/</url>
<!-- 是否开启该插件仓库的 release 版本下载支持 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--使配置文件始终处于活动状态-->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
注意:配置中的id和权限认证没有关系,但是和活动状态有关系。
执行mvn clean install
或mvn install
命令,如图所示
你可能会好奇,为什么还会访问中央仓库的地址?
这是因为pom.xml继承了super.pom文件,我们也可以再setting.xml中定义属于私服的镜像,示例代码如下:
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Public Mirror</name>
<url>http://127.0.0.78:8081/repository/maven-public</url>
</mirror>
</mirrors>
注意:镜像的id和权限认证id有关系,需要一致。
再次执行,可以看到下载地址变成私服地址了,如图所示
执行完后,如图所示
一般推荐私服搭配国内镜像一起使用(比如:aliyun),这样的好处就是私服没有的Jar包下载速度快些,配置了私服镜像后,项目中所依赖的第三方Jar包也会上传到Nexus。
章节目录
上一章:项目管理工具:Maven(中)