Maven私服架构

目录

1.maven私服介绍

1.1 私服介绍

1.2 Nexus介绍

2. maven私服实战

2.1 nexus安装

2.2 nexus仓库类型

2.3 将项目发布到私服

2.4 从私服下载jar包

2.5  将第三方jar包发布到私服


1.maven私服介绍

1.1 私服介绍

       正式开发时,不同的项目组开发不同的工程。maven-dao 工程开发完毕,发布到私服maven-service 从私服下载 dao

       公司在自己的局域网内搭建自己的远程仓库服务器,称为私服, 私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。

私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载

1.2 Nexus介绍

      Nexus Maven 仓库管理器, 通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构件搜索功能等。

2. maven私服实战

2.1 nexus安装

  1. 将安装包存放到一个不含中文的目录下,查看conf文件下的nexus.properties配置文件,可以修改对应的配置。

       2. nexus的安装命令:使用管理员运行cmd命令窗口,切换目录nexus\nexus-2.12.0-01\bin目录下,执行nexus.bat install进行安装。执行nexus.bat start 启动服务 执行nexus.bat stop停止服务

       3. nexus的卸载命令:使用管理员运行cmd命令窗口,切换目录nexus\nexus-2.12.0-01\bin目录下,执行nexus.bat uninstall进行卸载

       4. 访问图形化界面:打开浏览器,输入http://localhost:端口号/nexus访问

       5. 点击log in,进行登录。用户名:admin 密码:admin123

2.2 nexus仓库类型

nexus提供了不同的仓库类型:

  • hosted:宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
  • proxy代理仓库, 用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私服自动去中央仓库下载 jar 包或者插件。
  • group仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓库组。Group仓库组也是可以自己进行定制的。

  •  virtual:兼容 Maven1 版本的 jar 或者插件

2.3 将项目发布到私服

  1. 配置 Maven 环境

首先,你需要在客户端机器上配置 Maven 环境,并修改 settings.xml 文件,以配置连接私服的用户名和密码。这些凭据将用于私服进行身份验证。

<servers><!-- 稳定版本仓库配置 --><server><id>releases</id><username>admin</username><password>admin123</password></server><!-- 开发版本仓库配置 --><server><id>snapshots</id><username>admin</username><password>admin123</password></server><!-- 第三方仓库配置 --><server><id>thirdparty</id><username>admin</username><password>admin123</password></server>
</servers>

        2. 配置项目 pom.xml

接下来,你需要配置项目 pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库。

<distributionManagement><repository><id>releases</id><url>http://localhost:端口号/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><url>http://localhost:端口号/nexus/content/repositories/snapshots/</url></snapshotRepository>
</distributionManagement>

注意:这里的 id 标签的值要和 settings.xml配置文件中的id值保持一致。

        3. 发布项目到私服

在配置完成后,你可以在项目目录中执行 mvn deploy 命令,将项目发布到私服上。

         4. 查看私服结果

2.4 从私服下载jar包

  1. 在settings.xml配置文件配置私服的镜像文件
<mirrors><mirror><id>nexusmaven</id><mirrorOf>*</mirrorOf><name>nexus maven</name><url>http://localhost:端口号/nexus/content/groups/public/</url></mirror>
</mirrors>

     2. 测试依赖管理

为了测试依赖管理是否正常工作,你可以先发布一个项目到私服,然后删除本地仓库中的相应 JAR 包,再使用其他项目去依赖该 JAR 包,检查是否能够从私服中成功下载。

在其他项目中,你可以这样引入依赖:

<!--依赖Hello这个项目-->
<dependencies><dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>1.0-RELEASES</version></dependency>
</dependencies>

如图:依赖此Hello项目的HelloFriend项目去私服下载所需要的jar包。

还有一种方式:配置仓库。可以修改自己项目的pom配置文件,添加仓库的配置。 

<repositories><repository><id>nexus</id><name>nexusmaven</name><url>http://localhost:端口号/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories>
<pluginRepositories><pluginRepository><id>public</id><url>http://localhost:端口号/nexus/content/groups/public/</url><name>pluginRepositories</name></pluginRepository>
</pluginRepositories>

       上面的方式不是特别的理想,需要在每一个项目的pom文件中都添加相同的配置,比比较麻烦。可以在settings.xml配置文件中添加配置,完成统一的设置。

<!-- 下载jar包配置 --><profile> <!--profile的id --><id>dev</id><repositories><repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 --><id>nexus</id> <!--仓库地址,即nexus仓库组的地址 --><url>http://localhost:端口号/nexus/content/groups/public/</url> <!--是否下载releases构件 --><releases><enabled>true</enabled></releases> <!--是否下载snapshots构件 --><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 --><pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 --><id>public</id><name>Public Repositories</name><url>http://localhost:端口号/nexus/content/groups/public/</url></pluginRepository></pluginRepositories></profile>

激活配置

<activeProfiles><activeProfile>dev</activeProfile>
</activeProfiles>

2.5  将第三方jar包发布到私服

第三方包上传到私有maven仓库里有两种方式:

1. maven仓库界面上传。maven界面上有上传第三方包按钮,可以直接按照要求上传即可。

2. maven命令行模式。

步骤:

        ①在settings.xml配置文件中配置用户名密码

<server><id>thirdparty</id><username>admin</username><password>admin123</password>
</server>

        ②maven命令上传第三方包。

mvn deploy:deploy-file  -DgroupId=sdk的groupId -DartifactId=包的名称 -Dversion=版本号(如:0.0.1) -Dpackaging=包的类型 -Dfile=第三方sdk存放在本地的文件位置 -Durl=要上传到maven仓库的仓库位置 -DrepositoryId=maven中配置的server id

-DgroupId=com.alibaba                                    第三方包的groupId
-DartifactId=fastjson                                    第三方包的名称
-Dversion=1.2.7                                          版本号(如:0.0.1),建议用三位版本号表示
-Dpackaging=jar                                      上传的类型是jar类型
-Dfile=D:\repository\.....\fastjson-1.2.71.jar   第三方sdk存放在本地的文件位置
-Durl=http://localhost:8081/repository/...../    要上传到maven仓库的仓库位置
-DrepositoryId=thirdparty                               setting.xml文件中配置server的ID

命令行上传成功截图: 

 私服界面:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《深度学习》 了解YOLO基本知识

目录 一、关于YOLO 1、什么是YOLO 2、经典的检测方法 1&#xff09;one-stage单阶段检测 模型指标介绍&#xff1a; 2&#xff09;two-stage多阶段检测 二、关于mAP指标 1、概念 2、IOU 3、关于召回率和准确率 4、示例 5、计算mAP 一、关于YOLO 1、什么是YOLO YOL…

工具_OpenSSL

文章目录 常见https证书类型生成nginx使用证书 一句话简介&#xff1a;一个开源的安全相关工具箱软件&#xff0c;apache license 官网&#xff1a;https://www.openssl.org/&#xff0c;这个官网只有Linux 安装包和 源码 windows下载网站&#xff1a;https://slproweb.com/pr…

深度学习-30-基于PyTorch搭建神经网络的全流程

文章目录 1 定义一个Class1.1 方法__init__()1.2 方法forward()2 定义一个实例2.1 定义网络2.2 训练步骤2.3 更新权重3 整体顺序3.1 通用流程3.2 示例应用3.2.1 准备数据3.2.2 通用流程4 参考附录1 定义一个Class pytorch的网络搭建,比tensorflow简单很多。 格式很好理解。 …

一文2500字从0到1实现压测自动化!

大家好&#xff0c;我是小码哥&#xff0c;最近工作有点忙&#xff0c;一直在实现压测自动化的功能&#xff0c;今天来分享一下实现思路 我所在的业务线现在项目比较少了&#xff0c;所以最近一个月我都没有做业务测试&#xff0c;需求开发完后RD直接走免测就上线&#xff0c;…

第十一课 Vue中的按键修饰符

Vue中的按键修饰符 Vue中的事件绑定中&#xff0c;键盘事件有些特殊&#xff0c;我们可以通过获取不同的键值操作不同键盘触发不同的事件 Vue为不同键盘定义了不同的键名 数字按键修饰符 根据不同的键值&#xff0c;可以获取不同的键盘按键 示例&#xff1a;获取回车键&am…

手机ip切换成全局模式怎么弄

在当今数字化时代&#xff0c;智能手机已成为我们日常生活中不可或缺的一部分&#xff0c;无论是工作、学习还是娱乐&#xff0c;都离不开它的陪伴。随着网络技术的不断发展&#xff0c;手机IP地址的切换技术也逐渐走进大众视野&#xff0c;中&#xff0c;“全局模式” 作为IP切…

windows环境下vscode编写c语言连接mysql

创建一个文件夹test02 在文件夹中创建test.c文件 用vscode打开test02文件夹 自动生成tasks.json和launch.json文件&#xff0c;需要安装这里通C/C Runner插件来自动生成json文件和一些文件夹。 接下来配置mysql 本地已经安装了mysql数据库&#xff0c;此安装过程省略。 有…

030 elasticsearch查询、聚合

文章目录 查询聚合查询RestHighLevelClientElasticsearchRestTemplat SpringData对ES客户端的封装&#xff1a;ElasticsearchRestTemplate SpringData对CRUD的封装&#xff1a;ElasticsearchRepository 原生ES客户端&#xff1a;RestHighLevelClient 查询 package com.xd.cube…

java如何部署web后端服务

java如何部署web后端服务 简单记录一下&#xff0c;方便后续使用。 部署流程 1.web打包 2.关掉需要升级的运行中的服务 /microservice/hedgingcustomer-0.0.1-SNAPSHOT/conf/bin/ 执行脚本 sh shutdown.sh 3.解压文件 返回到/microservice 将升级包上传到该路径&#x…

Open3D-Geometry-11:Mesh deformation 网格变形算法

1. as-rigid-as-possible 如果想根据少量约束使三角形网格变形,可以使用网格变形算法。 Open3D 通过SorkineAndAlexa2007实现了 as-rigid-as-possible 方法,优化了以下能量函数 ∑ i ∑ j ∈ N ( i

JAVA IDEA 取消掉Warning:(22, 14) Class ‘XXXController‘ is never used 提示信息

方法一&#xff1a;代码修改 无用的方法&#xff1a; 删除对应的代码。增加该类对应的应用实现。 方法二&#xff1a;取消掉提示 找到settings—Editor—Inspections&#xff0c;搜索Unused declaration 右边的勾取消掉&#xff0c;对应的校验属性。

rabbitmq踩坑(1)

开发中rabbitmq的配置文件写错了&#xff0c;改正后一直报错 error occurred in message handler [org.springframework.integration.amqp.outbound.AmqpOutboundEndpoint36e73413];nested exception is org.springframework.amqp.AmqpIOException: java.io.IOException 配置…

座舱软件开发“道与术”

脑图 仅仅个人归纳见解&#xff0c;欢迎专家莅临指导。

【CHI】CHI协议自问自答

学习CHI有一段时间了&#xff0c;如今回过头来&#xff0c;再读协议&#xff0c;一些问题做个记录。如果有错误的地方&#xff0c;欢迎指正。如果有其他的问题&#xff0c;也欢迎留言讨论。 spec&#xff1a; IHI0050F_amba_chi_architecture_spec 【持续更新ing】 目录 1. …

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中&#xff0c;实现添加列表项&#xff0c;最后一项自动显示在可视区域范围&#xff01;&#xff01; 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

JVM成神之路

目录 JVM入门关&#xff1a; 一&#xff1a;JVM的内存布局是咋样的&#xff1f; 二&#xff1a;方法区&#xff0c;永久代&#xff0c;元空间有什么区别&#xff1f; 三&#xff1a;常量池和字符串常量池有什么区别&#xff1f; 四&#xff1a;什么是堆溢出&#xff0c;什…

【设计模式】Python 设计模式之建造者模式(Builder Pattern)详解

Python 设计模式之建造者模式&#xff08;Builder Pattern&#xff09;详解 在软件开发中&#xff0c;创建复杂对象往往需要多个步骤&#xff0c;而这些步骤之间的顺序、配置可能有多种变化。为了解决这个问题&#xff0c;建造者模式&#xff08;Builder Pattern&#xff09;应…

结构化系统分析,结构化系统设计(正片)

结构化分析方法&#xff1a;是面向数据流进行需求分析的方法&#xff0c;是用抽象模型的概念&#xff0c;按软件内部数据传递、变换的关系&#xff0c;自顶向下逐层分解&#xff0c;直到找到满足功能要求的所有可实现的软件为止。 数据流图&#xff08;DFD&#xff09;&#xf…

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标&#xff1a; 提示&#xff1a;本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统&#xff1a;Ubuntu 23.04&#xff1b; 文中提到的“本机”&#xff1a;代表&#xff0c;宿主机&#xff0c;物理主机&#xff1b; 首先&#xff0c…

吴恩达深度学习笔记(7)

误差分析&#xff1a; 你运行一个算法代替人类计算&#xff0c;但是没有达到人类的效果&#xff0c;需要手动检查算法中的错误&#xff0c;对模型的一些部分做相应调整&#xff0c;才能更好地提升分类的精度。如果不加分析去做&#xff0c;可能几个月的努力对于提升精度并没有…