使用Nexus搭建Maven * 教程的方法步骤
作者:我认不到你 发布时间:2023-03-05 18:56:58
一、基本介绍(Nexus(maven * ))
1,如果没有搭建 * 会有什么问题?
如果没有 * ,我们所需的所有构件都需要通过 Maven 的中央仓库或者第三方的 Maven 仓库下载到本地,而一个团队中的所有人都重复的从 Maven 仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。
另外,很多情况下项目的开发都是在内网进行的,可能根本连接不了 Maven 的中央仓库和第三方的 Maven 仓库。
我们开发的公共构件如果需要提供给其它项目使用,也需要搭建 * 。
2,搭建 * 的优点
Maven * 的概念就是在本地架设一个 Maven 仓库服务器,在代理远程仓库的同时维护本地仓库。当我们需要下载一些构件(artifact)时,如果本地仓库没有,再去 * 下载, * 没有,再 * 仓库下载。这样做会有如下一些优点:
减少网络带宽流量
加速 Maven 构建
部署第三方构件
提高稳定性、增强控制
降低中央仓库的负载
3,Nexus 介绍
Nexus 是一个专门的 Maven 仓库管理软件,它不仅能搭建 Maven * ,还具备如下一些优点使其日趋成为最流行的 Maven 仓库管理器:
提供了强大的仓库管理功能,构件搜索功能
它基于 REST,友好的 UI 是一个 ext.js 的 REST 客户端
它占用较少的内存
基于简单文件系统而非数据库
我的理解:平时我们用的是阿里的共用maven服务器,但是在公司时,我们需要用到公司自研的jar包,这些jar包是私有的,所以在阿里的共用maven服务器中找不到,虽然我们也可以那个u盘来拷贝公司的私有jar包,但公司人这么多,一个个拷贝就太慢了,可以使用nexus搭建一个公司的 * ,只需要连接公司的内网,配置好maven的settings.xml就可以在nexus中下载自己需要的jar包了
二、Nexus 服务的安装(推荐第二种:使用docker方式安装)
Nexus 既可以使用传统的二进制包进行安装,也可以使用 Docker 容器的方式进行安装运行。下面分别介绍这两种方法。
1,使用二进制发行包安装
(1)首先确保系统 JDK 环境,具体安装步骤可以参考我之前写的文章:
Java - CentOS下JDK的安装教程
(2)接着我们访问 Nexus 官网(点击访问),点击“GET REPOSITORY OSS”按钮打开下载页面:
(3)根据环境选择下载相应的版本,比如我这里下载 Linux 版本的安装包。
(4)将下载下来的压缩包上传到服务器(比如 /usr/local 目录下),然后进行解压:
tar -zxf nexus-3.21.2-03-unix.tar.gz
5)解压后会得到两个文件夹:nexus-3.21.2-03(nexus 服务目录)、sonatype-work(私有库目录)
(6)进入 nexus-3.21.2-03 文件夹,其中 etc/nexus-default.properties 文件配置端口(默认为 8081)和 work 目录信息,我们可以按需修改。
cd nexus-3.21.2-03``cat etc/nexus-``default``.properties
(7)然后执行如下命令开放 8081 端口:
firewall-cmd --permanent --add-port=``8081``/tcp``firewall-cmd --reload
(8)最后执行如下命令启动服务即可:
cd bin``./nexus start
2,使用 Docker 镜像进行安装(推荐)
(1)首先执行如下命令下载 Nexus3 镜像:
docker pull sonatype/nexus3
(2)接着执行如下命令,创建宿主机挂载目录:
mkdir` `–vp /usr/local/nexus-data
(3)最后执行如下命令运行 Nexus3 容器即可:
docker run -d --name nexus3 -p 8081:8081 -v /usr/local/nexus-data:/``var``/nexus-data sonatype/nexus3
(4)同样不要忘记执行如下命令开放 8081 端口:
firewall-cmd --permanent --add-port=``8081``/tcp``firewall-cmd --reload
三、Nexus 服务的配置
(1)Nexus 服务启动以后,我们使用浏览器访问 http://IP:8081/,点击右上角登录按钮:
(2)首次登录会提示密码保存在 /usr/local/sonatype-work/nexus3/admin.password 文件中,我们查看服务器上这个文件内容,然后作为密码登录:
(3)登录后会让我们设置新的密码(这里我设置为 123):
(4)登录后的界面如下:
(1)默认仓库说明:
maven-central:maven 中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jarmaven-releases:私库发行版 jar,初次安装请将 Deployment policy 设置为 Allow redeploymaven-snapshots:私库快照(调试版本)jarmaven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 settings.xml 或项目 pom.xml 中使用(2)仓库类型说明:
group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group 中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为 Releases、Snapshots、Central,当然你也可以自己设置。hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件snapshots:本地项目的快照仓库releases: 本地项目发布的正式版本proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的 Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库central:中央仓库
(5)接下来我们增加一个代理仓库,使用的是阿里云公共仓库。首先点击“Create repository”按钮开始创建一个仓库:
(6)类型选择 maven2(proxy):
(7)配置阿里云地址 http://maven.aliyun.com/nexus/content/groups/public/,name 可以随意填(这里我写 aliyun-proxy),然后点击最下方按钮创建:
(8)阿里云代理仓库创建完毕后,我们编辑 maven-public,将其添加到放入 group 中,并调整优先级,然后保存:
(9)点击 maven-public 条目的 copy 按钮即可拷贝 * 地址:
附一:Maven 配置使用 * (下载依赖)
1,基本说明
(1)Maven 配置 * 下载有两种方式:
setting.xml:该文件配置的是全局模式pom.xml:该文件的配置的是项目独享模式
注意:若 pom.xml 和 setting.xml 同时配置了,以 pom.xml 为准。
(2)当我们在 maven 使用 maven-public 仓库地址的时候,会按照如下顺序访问:本地仓库 --> * maven-releases --> * maven-snapshots --> 远程阿里云 maven 仓库 --> 远程中央仓库。
2,通过 setting.xml 文件配置
(1)setting.xml 文件配置样例如下。配置后不需要再配置 pom.xml 文件,即可通过 * 下载 jar 依赖包。
<mirrors>
<mirror>
<!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
<id>maven-public</id>
<!--镜像名称 -->
<name>maven-public</name>
<!--*指的是访问任何仓库都使用我们的 * -->
<mirrorOf>*</mirrorOf>
<!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 -->
<url>http://192.168.60.133:8081/repository/maven-public/</url>
</mirror>
</mirrors>
(2)如果我们并没有搭建 * ,属于个人开发,那么也可以直接配置使用阿里 云maven 仓库:
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
3,通过 pom.xml 文件配置
(1)pom.xml 文件配置样例如下。如果我们配置了 pom.xml,则以 pom.xml 为准。
<repositories>
<repository>
<id>maven-nexus</id>
<name>maven-nexus</name>
<url>http://192.168.60.133:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
(2)如果没有 * ,我们同样也可以配置阿里云 maven 仓库:
<repositories>
<repository>
<id>maven-aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
附二:Maven 配置使用 * (下载插件)
下面是一个使用 pom.xml 配置样例:
<pluginRepositories>
<pluginRepository>
<id>maven-nexus</id>
<name>maven-nexus</name>
<url>http://10.172.0.201:8081/nexus/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
附三:Maven 配置使用 * (发布依赖)
(1)首先修改 setting.xml 文件,指定 releases 和 snapshots server 的用户名和密码:
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123</password>
</server>
</servers>
(2)接着在项目的 pom.xml 文件中加入 distributionManagement 节点:
注意:repository 里的 id 需要和上一步里的 server id 名称保持一致。
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://192.168.60.133:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://192.168.60.133:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
(3)执行 mvn deploy 命令发布:
(4)登录 Nexus,查看对应的仓库已经有相关的依赖包了。
发布到的仓库说明:
若项目版本号末尾带有 -SNAPSHOT,则会发布到 snapshots 快照版本仓库若项目版本号末尾带有 -RELEASES 或什么都不带,则会发布到 releases 正式版本仓库
来源:https://blog.csdn.net/qq_57581439/article/details/127769703
猜你喜欢
- Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new
- ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所
- 一、Maven简介1. 什么是MavenMaven:是Apache提供的免费开源的项目管理工具。它提供了一个项目对象模型(pom.xml)、
- 一.为什么要用线程池先来看个简单的例子1.直接new Thread的情况:public static void main(String[]
- 本文实例为大家分享了Java基于Socket实现简易版多人聊天室的具体代码,供大家参考,具体内容如下一、 聊天室需求1、一个服务端,多个客户
- Spring多配置文件有什么好处? 按照目的、功能去拆分配置文件,可以提高配置文件的可读性与维护性,如将配置事务管理、数据源等少改动的配置与
- 最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下1. 需求项目打包,满足以下要求:1.
- 利用Jconsole工具查看程序的资源占用请求。安装jdk时bin目录有jconsole.exe工具,或者通过 Win + R,输入jcon
- 这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。接下来
- 目录查查询指定列查询所有列条件查询子查询根据业务逻辑添加条件连接查询增新增一条批量新增删改主要演示DynamicSql风格代码如何使用,基本
- 前言:时间过得真是快,现在已经是2022年了。作为开发来说,时间处理是非常繁琐的。从Java 8开始有了Java 8 T
- 日志输出是所有系统必备的,很多开发人员可能因为常常使用log4j而忽视了JDK logging模块,两者之间是否有联系?是怎样的联系?JDK
- 近日工程中,逐渐感觉到原来复制粘贴代码的笨重,突然想起以前有人和我说起过Git和SVN之类的版本管理工具。由于平时主要是写Java代码,所以
- Spring对配置类的处理主要分为2个阶段配置类解析阶段会得到一批配置类的信息,和一些需要注册的beanbean注册阶段将配置类解析阶段得到
- 树的结构说得差不多了,现在我们来说说一种数据结构叫做哈希表(hash table),哈希表有是干什么用的呢?我们知道树的操作的时间复杂度通常
- 单元测试单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法
- 引出泛型我们通过如下的示例,引出为什么泛型的概念。public class Test {public static void main(St
- 使用IDEA开发微服务项目,需要启动多个微服务,可以开启IDEA的Run DashBoard窗口,需要对IDEA中指定工程的父工程进行配置进
- 用一个7 x 7的矩形表示迷宫,0和1分别表示的是通路和障碍。通过设计编写程序找到蓝色小球达到蓝色旗子的路线思路:构建一个迷宫(用二维数组)
- Java RandomAccessFile 指定位置实现文件读取与写入RandomAccessFile是属于随机读取类,是可以对文件本身的内