springCloud使用maven

news2025/1/10 4:05:56

springCloud项目使用maven集成nexus

  • 一:故事背景
  • 二:基础概念
    • 2.1 什么是Maven
    • 2.2 什么是nexus
  • 三:实操
    • 3.1 setting文件配置
    • 3.2 项目内pom.xml配置
    • 3.3 jar上传
      • 3.3.1 maven插件上传
      • 3.3.2 mvn命令上传
      • 3.3.3 页面上传
      • 3.3.4 通过Rest的方式进行上传
        • 3.4.1 pom依赖
        • 3.4.2上传代码
  • 四:jar包下拉
  • 五:总结提升

一:故事背景

我们的ar项目要开发第三版。现在要进行框架的搭建。搭建的是一个springCloud的项目。项目结构是参照第二版进行搭建的。不过这次搭建的过程中,集成了nexus,使用nexus做仓库,管理我们的项目。今天就总结一下,如何在springCloud项目集成nexus

二:基础概念

2.1 什么是Maven

Maven是一个Java项目管理和自动构建工具。它使用基于XML的配置文件来定义项目的结构和依赖关系,并使用这些信息来自动生成项目的构建脚本。Maven可以自动下载所需的依赖项并将它们添加到项目的classpath中,还可以自动生成项目文档和报告,并且可以与许多其他工具集成。通过使用Maven,开发人员可以更加专注于编写代码,而不必担心配置文件和依赖项管理等问题。

2.2 什么是nexus

Nexus是一个开源的仓库管理器,它用于管理软件构件和依赖项。它提供了一个集中式的存储库来存储各种类型的构件,例如Jar文件、WAR文件、ZIP文件、RPM包等。Nexus还提供了一组工具和API,使得开发人员可以方便地发布、管理和下载构件。Nexus的一个主要优势是它可以与Maven集成,这使得在使用Maven进行构建时更加容易地管理依赖项和存储构件。此外,Nexus还提供了对安全性和访问控制的支持,以确保仓库中的构件仅被授权的用户访问。
了解

三:实操

实操前,默认大家已经安装好了maven和nexus,这里不多做介绍,如果大家需要可以网上查询,相关博客很多。

3.1 setting文件配置

<settings>
  <!-- 配置Maven服务器的认证信息,用于访问私有仓库 -->
  <servers>
    <server>
      <id>my-server</id> <!-- 服务器的id,必须唯一 -->
      <username>user</username> <!-- 服务器的用户名 -->
      <password>password</password> <!-- 服务器的密码 -->
    </server>
  </servers>

  <!-- 配置远程仓库镜像,加速依赖的下载 -->
  <mirrors>
    <mirror>
      <id>aliyun</id> <!-- 镜像的id,必须唯一 -->
      <name>aliyun maven mirror</name> <!-- 镜像的名称 -->
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 镜像的URL地址 -->
      <mirrorOf>central</mirrorOf> <!-- 镜像所代理的仓库,这里代理中央仓库 -->
    </mirror>
  </mirrors>

  <!-- 配置Maven在网络环境下访问远程仓库的代理服务器信息 -->
  <proxies>
    <proxy>
      <id>my-proxy</id> <!-- 代理的id,必须唯一 -->
      <active>true</active> <!-- 是否启用代理 -->
      <protocol>http</protocol> <!-- 代理服务器的协议 -->
      <host>proxy.mycompany.com</host> <!-- 代理服务器的主机名或IP地址 -->
      <port>8080</port> <!-- 代理服务器的端口号 -->
      <username>user</username> <!-- 代理服务器的用户名 -->
      <password>password</password> <!-- 代理服务器的密码 -->
      <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts> <!-- 不需要使用代理的主机列表 -->
    </proxy>
  </proxies>

  <!-- 配置Maven本地仓库的位置 -->
  <localRepository>${user.home}/.m2/repository</localRepository>

  <!-- 配置是否离线模式 -->
  <offline>false</offline>

  <!-- 配置Maven插件组 -->
  <pluginGroups>
    <pluginGroup>org.apache.tomcat.maven</pluginGroup> <!-- 配置Tomcat Maven插件组 -->
  </pluginGroups>

  <!-- 配置全局属性 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 项目的源代码编码 -->
  </properties>
</settings>

3.2 项目内pom.xml配置

你需要在你的父项目里添加如下配置。如果你的项目之间有父子依赖关系,只在子项目内进行jar包上传,在下拉的时候,有子项目会去找父项目的依赖而导致报错

    <distributionManagement>
        <!--Release类型的托管资源库-->
        <repository>
            <!--id对应nexus仓库的id-->
            <id>test_hosted</id>
            <!--自定义名称-->
            <name>Releases</name>
            <!--仓库对应的URL地址-->
            <url>http://xxx.xxx.xx.xxx:port/repository/test_hosted/</url>
        </repository>
        <!--Snapshot类型的托管资源库-->
        <snapshotRepository>
            <!--id对应nexus仓库的id-->
            <id>test_snapshot_hosted</id>
            <!--自定义名称-->
            <name>Snapshot</name>
            <!--仓库对应的URL地址-->
            <url>http://xxx.xxx.xx.xxx:port/repository/test_snapshot_hosted/</url>
        </snapshotRepository>
    </distributionManagement>

3.3 jar上传

配置好之后,我们就可以尝试进行上传了。上传一共有四种方式

3.3.1 maven插件上传

我们可以直接通过idea带的插件,进行上传,他会去setting读取我们配置的账号,密码,去pom文件读取上传的地址和仓库,上传之后,nexus内会有我们项目对应的jar包
在这里插入图片描述
上传成功后在我们的nexus上可以看到对应的文件
在这里插入图片描述

3.3.2 mvn命令上传

我们也可以直接通过命令将jar包进行上传,上传到nexus,这里只会读取setting里配置的账号密码,上传的路径,版本等信息,需要我们自己配置

mvn deploy:deploy-file -DgroupId=<group-id> -DartifactId=<artifact-id> \
-Dversion=<version> -Dpackaging=<packaging> -Dfile=<path-to-file> \
-DrepositoryId=nexus -Durl=<nexus-url>

上面的参数对应
-DgroupId:Maven项目的groupId。
-DartifactId:Maven项目的artifactId。
-Dversion:Maven项目的版本号。
-Dpackaging:文件的类型,例如jar、war等。
-Dfile:要上传的文件的路径。
-DrepositoryId:在Maven的settings.xml中定义的服务器的id。在这个例子中,我们使用nexus作为id。
-Durl:Nexus服务器的URL地址。

大家使用的时候,请将<group-id><artifact-id><version><packaging>替换为您的Maven项目的实际值,
将<path-to-file>替换为要上传的文件的路径。将<nexus-url>替换为您Nexus服务器的URL地址。

3.3.3 页面上传

这个没有什么技术含量,将对应信息填对就可以了

  1. 选择要上传到那个仓库
    在这里插入图片描述
  2. 填写信息,选择文件,完成之后进行上传就可以了。
    3.

3.3.4 通过Rest的方式进行上传

可以通过接口的方式进行上传,官方文档里也有具体的api文档,但是做起来比较复杂,我们这里只做了研究,并没有在项目里实际进行应用。

3.4.1 pom依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
    </dependencies>

3.4.2上传代码

public static void main(String[] args)  {
    RestTemplate restTemplate = new RestTemplate(); // 创建RestTemplate实例
    String username = "admin"; // 用户名
    String password = "admin"; // 密码
    restTemplate.getInterceptors().add(
            new BasicAuthenticationInterceptor(username, password)); // 添加Basic Authentication拦截器,用于进行Http Basic认证

    String filename = "D:\\项目开发\\metaverse3-backend\\metaverse3-gateway\\target\\metaverse3-gateway-1.0-SNAPSHOT.jar"; // 文件路径
    File file = new File(filename); // 创建文件对象
    FileSystemResource resource = new FileSystemResource(file); // 创建文件系统资源对象
    MultiValueMap<String, Object> requestMap = new LinkedMultiValueMap<>(); // 创建请求参数Map
    requestMap.add("file", resource); // 添加文件系统资源对象到请求参数Map中
    HttpHeaders headers = new HttpHeaders(); // 创建HttpHeaders对象
    headers.setContentType(MediaType.MULTIPART_FORM_DATA); // 设置Content-Type为multipart/form-data
    HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(requestMap, headers); // 创建HttpEntity对象,用于发送POST请求

    test(restTemplate, requestEntity); // 调用test方法发送请求
}

public static void test(RestTemplate restTemplate, HttpEntity<MultiValueMap<String, Object>> requestEntity){
    String url = "http://xxx.xxx.xx.xxx:port/repository/test_snapshot_hosted/"; // Nexus仓库URL
    String groupId = "com.mycompany"; // Maven groupId
    String artifactId = "my-artifact"; // Maven artifactId
    String version = "1.0-SNAPSHOT"; // Maven版本号
    String packaging = "jar"; // 打包类型
    String classifier = "my-classifier"; // 分类器
    String repositoryPath = groupId.replace('.', '/') + '/' + artifactId + '/' + version + '/' + artifactId + '-' + version + (classifier == null ? "" : '-' + classifier) + '.' + packaging; // Nexus仓库中存储的路径
    String nexusUrl = url + repositoryPath; // 完整的Nexus仓库URL
    ResponseEntity<String> responseEntity = restTemplate.exchange(nexusUrl, HttpMethod.PUT, requestEntity, String.class); // 发送PUT请求,将文件上传到Nexus仓库
}

通过以上代码可以将对应jar包上传到对应nexus。大家可以基于次部分代码进行相应改造

四:jar包下拉

jar包下拉的方式很简单,只要找到我们上传的jar包,然后再需要使用的项目的pom文件下使用 dependency标签引入就可以了,大家都应该有过引入的经验,这里就不多解释了
在这里插入图片描述

五:总结提升

本文介绍了如何集成nexus,并且给出上传jar包的各种方式,大家可以根据自己的需求进行实操。

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

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

相关文章

c++之到底什么时候需要加入析构函数定义?以及内存泄漏

析构函数(destructor)是在类对象销毁时自动调用的特殊成员函数。它的主要作用是释放对象的资源,如堆内存、文件、网络连接等。析构函数的特点是: 1. 析构函数名称与类名相同,前面加~。如~MyClass()。 2. 析构函数没有返回类型。 3. 析构函数可以重载,但不能有参数。 4. 一个…

2023年认证杯二阶段C题数据合并python以及matlab多途径实现代码

对于每种心率下给出的数据&#xff0c;我们需要进行合并才能方便后续处理&#xff0c;这里为大家展示利用python以及matlab分别实现合并的代码 import pandas as pd import os# 创建一个空的DataFrame对象 merged_data pd.DataFrame()# 设置数据文件所在的文件夹路径 folder_…

本地编译和交叉编译的理解

1、本地编译&#xff1a;常见的软件开发&#xff0c;都是属于本地编译&#xff1a;在当前的PC下&#xff0c;x86的CPU下&#xff0c;直接编译出来程序&#xff0c;可以运行的程序&#xff08;或者库文件&#xff09;&#xff0c;其可以直接在当前的环境&#xff0c;即x86的CPU下…

【linux】挖矿病毒nanominer伪装成python占用服务器GPU!本文带你分析并杀毒!

病毒表现 gpustat -cpu 可以看到root用户将GPU的核心跑满了每个占用都是100%&#xff0c;显存吃了6G多。 nvidia-smi 不能正常显示GPU被哪些进程占用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/780f90080a084a44ac59227e384f985b.png 病毒文件分析 在/tmp/.x/…

浅比一下,各大免费CDN的速度

前言 CDN那么多&#xff0c;到底哪个体验最好呢&#xff1f;今天来简单对比一下免费的CDN之间的差距&#xff0c;看看那家最适合白嫖 百度CDN 官网&#xff1a;https://su.baidu.com/ 平均速度62.7ms&#xff0c;需要备案的域名才行&#xff0c;支持SSL&#xff0c;流量5G/天…

Spring 整合 Mybatis -- Spring入门保姆级教程(四)

文章目录 前言五、Spring 整合 Mybatis1.Mybatis一般开发流程2.spring整合mybatis思路分析3.Spring整合Mybatis环境准备&#xff08;注解开发&#xff09;4.Spring整合Mybatis5.小结 引用网站及博客总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类…

​AI + 非遗文化传播,人工智能师资培训重磅招募

大语言模型热度空前&#xff0c;诸如文心一言、 ChatGPT 等已经能够与人对话互动、回答问题、协助创作&#xff0c;逐渐应用于人们的工作和生活&#xff0c;也引发了社会热议。为推动大模型及人工智能相关专业人员的培养&#xff0c;同时将人工智能技术融入非遗文化传播&#x…

电子采购系统实现方式(SRM供应商管理)

企事业数字化转型专家&#xff0c;提供各类应用解决方案。您身边的赋能小助手&#xff01; 文章目录 前言一、当下采购的痛点二、解决方案-供应商管理1.供应商管理 三、解决方案-企业询价、供应商报价管理四、解决方案-采购订单五、送货、到货、订单管理总结 前言 随着各类产业…

软件工程(五) 结构化需求与面向对象需求分析

1、结构化需求分析(SA) 结构化需求分析要完成功能模型、数据模型和行为模型的构建。 1.1、功能模型 一般用数据流图进行建模,也就是DFD。 比如我们要开发一个子啊先教育平台系统,我们把这个系统看作一个整体,去分析哪些人员会用到这个系统。比如有学员,培训部,辅导老师…

阿里云、腾讯云、移动云飙“价”:智能普惠成新风向?

经过过去一年的“低迷”境况之后&#xff0c;2023年云服务商因为AI大模型的爆发&#xff0c;重新燃起了斗志。站在当下的时间节点&#xff0c;云服务商们也在重新思考如何在新形势下&#xff0c;让自己占据更大的优势&#xff0c;于是一场围绕“技术竞争与市场争夺”的新战争打…

spring boot 项目yml方式区分开发、测试生产,并在maven中配置

1、新建配置文件&#xff0c;分别为application.yml、application-dev.yml、application-test.yml和application-prod.yml 2、在application.yml文件中添加如下代码 spring:profiles:## ??pom???????profile??active: "profiles.active"3、在pom中的proj…

class生命周期

组件实例 化的过程称作组件的挂载(mount)。 组件挂载的过程: 构造函数(constructor)最先执行&#xff0c;componentWillMount() 会在 render() 方法之前 执行&#xff0c;而 componentDidMount() 在 render() 方法之后执行。组件更新&#xff0c;调用顺序如下: • componentWi…

为什么 PostQuitMessage 会被设计出来?

众所周知&#xff0c;我们可以使用 SendMessage 或者 PostMessage 来发送消息&#xff0c;那为什么在 Win32 API 中&#xff0c;会单独设计一个 PostQuitMessage 呢? 有一位读者 A. Skrobov 问我&#xff0c;”PostQuitMessage 和 PostThreadMessage(GetCurrentThreadId, WM_…

【PyTorch框架】——框架安装使用流程搭建PyTorch神经网络气温预测

目录 一、引言 二、使用流程——最简单例子试手 三、分类任务——气温预测 总结&#xff1a; 一、引言 Torch可以当作是能在GPU中计算的矩阵&#xff0c;就是ndarray的GPU版&#xff01;TensorFlow和PyTorch可以说是当今最流行的框架&#xff01;PyTorch用起来简单&#xff…

【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(下)

MyEclipse v2022.1.0正式版下载 三、设计编辑基础 “设计”窗口由所见即所得的网页设计画布和UI控制面板组成。在此窗口中&#xff0c;您可以插入、编辑、删除和移动 HTML 和 JSP UI 控件和文本。拖放操作可以轻松实现重新定位设计画布上的UI控件。扩展的复制/粘贴操作能够将…

Unity3D :PlayableGraph

推荐&#xff1a;将NSDT场景编辑器加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 PlayableGraph PlayableGraph 定义一组绑定到 GameObject 或组件的可播放输出项。PlayableGraph 还定义一组可播放项及其依赖关系。图 1 提供了一个示例。 PlayableGraph 负责管理可…

卷积神经网络实例

文章目录 1. 数据输入2. 创建卷积模型并训练3. 超参数选择 卷积神经网络(CNN)主要由卷积层(Convolutional Layer)、池化层(Pooling Layer)、激活层(Activation Layer)和全连接层(Fully-connected Layer)组成。 卷积层(Convolutional Layer)&#xff1a;卷积层是CNN的核心组成部…

职场新人如何使用ChatGPT提高工作效率

刚刚从象牙塔中毕业&#xff0c;走向社会战场。作为职场新人的同学们刚刚进入公司和部门&#xff0c;难免会被安排做些本职工作之外的事务工作&#xff0c;被上级安排做些零零碎碎的小东西&#xff0c;俗称打杂。这些工作说难不难&#xff0c;想要做漂亮也并不简单&#xff0c;…

Linux实时监控网卡入流量和出流量(iftop、dstat、nethogs、nload)

背景 相同配置和相同业务的4台cvm&#xff0c;今天准备下线&#xff0c;检查还有没有业务流量的时候&#xff0c;发现有两台流量不符合预期&#xff0c;就很奇怪&#xff0c;想知道流量是从哪里来的。记录下当时定位思路 先来了解下基本的概念 一、Mbps、kbps、bps、bit、b…

光纤仿真相关参数——光纤损耗、数值孔径、归一化参数

对于光纤&#xff0c;不难想象它频带宽、损耗低、重量轻、抗干扰能力强、工作性能可靠、成本低等优点。 光纤的损耗可以用以下公式表示&#xff1a; 在光的传播过程中&#xff0c;会按照光线的功率损耗系数\alpha衰减&#xff0c;单位为 我们可以用经过一端距离l后输出的光功率…