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.tpcf.cn/pingmian/57109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;可能几个月的努力对于提升精度并没有…