springCloud使用maven

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包的各种方式,大家可以根据自己的需求进行实操。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麻了,真的不想做测试了...

前言 有不少技术友在测试群里讨论&#xff0c;近期的面试越来越难了&#xff0c;要背的八股文越来越多了,考察得越来越细&#xff0c;越来越底层&#xff0c;明摆着就是想让我们徒手造航母嘛&#xff01;实在是太为难我们这些测试工程师了。 这不&#xff0c;为了帮大家节约时…

今年这情况,大家多一手准备吧......

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

Jmeter +Maven+jenkins 接口性能全自动化测试

背景&#xff1a; 首先用jmeter录制或者书写性能测试的脚本&#xff0c;用maven添加相关依赖&#xff0c;把性能测试的代码提交到github&#xff0c;在jenkins配置git下载性能测试的代码&#xff0c;配置运行脚本和测试报告&#xff0c;配置运行失败自动发邮件通知&#xff0c…

桂院校园导航小程序 云开发项目 二次开发教程 1.0.1

Gitee代码仓库&#xff1a;桂院校园导航小程序 GitHub代码仓库&#xff1a;GLU-Guide 先 假装 大伙都成功安装了云开发项目&#xff0c;并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码里的注释我就不说明了&#xff0c;有提到 我的学校…

【实践篇】教你玩转JWT认证---从一个优惠券聊起 | 京东云技术团队

引言 最近面试过程中&#xff0c;无意中跟候选人聊到了JWT相关的东西&#xff0c;也就联想到我自己关于JWT落地过的那些项目。 关于JWT&#xff0c;可以说是分布式系统下的一个利器&#xff0c;我在我的很多项目实践中&#xff0c;认证系统的第一选择都是JWT。它的优势会让你…

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

API接口设计方案

API&#xff08;Application Programming Interface&#xff09;接口是一种用于与应用程序进行交互的标准化接口&#xff0c;它允许第三方应用程序通过网络调用应用程序的功能。设计API接口是开发人员在开发软件系统时的重要任务之一&#xff0c;因为API接口的质量和易用性直接…

Docker部署apache superset

使用Docker compose在docker中部署Apache Superset 说明&#xff1a;部署步骤按照superset官网说明总结而来-2023年 1、第一步安装docker 、docker compose。 这里我选择手动下载rpm包&#xff0c;然后yum install *.rpm方式来安装。 下载地址&#xff1a;https://download.…

Dart整理笔记 | Dart参考手册

Dart SDK 安装 如果是使用Flutter 开发&#xff0c;Flutter SDK自带&#xff0c;无需单独安装Dart SDK。 如果需要独立调试运行Dart代码&#xff0c;需要独立安装Dart SDK。 官方文档&#xff1a;https://dart.dev/get-dart windows(推荐): http://www.gekorm.com/dart-wind…

行云流水| CI 3.0 云原生构建全新上线

研发过程中&#xff0c;如何直观且准确地获悉代码提交后的质量状态&#xff1f; 引入持续集成&#xff0c;可以自动化的对代码进行代码检查、单元测试、编译构建、甚至部署与发布&#xff0c;大幅提升开发人员的效率。 腾讯云 CODING 推出 CI 3.0 ——云原生构建&#xff0c;是…

win下C++部署深度学习模型之clion配置pytorch+opencv教程记录

win下clion配置pytorch和OpenCV 一、clion配置vs编译器以及测试二、clion配置pytorch2.1、下载libtorch2. 2、环境变量配置2.3、cmakelist.txt编写2.4、main函数测试运行 三、clion配置opencv3.1、源码下载3.2、编译3.3、环境变量配置3.4、cmakelist.txt编写3.5 main函数测试运…

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)

【密码产品篇】动态口令系统密钥体系结构&#xff08;SM3、SM4&#xff09; 动态口令是一种一次性口令机制&#xff0c;用户无须记忆口令&#xff0c;也无须手工更改口令。口令通过用户持有的客户端器件生成&#xff0c;并基于一定的算法与服务端形成同步&#xff0c;从而作为…

oracle 学习之 unpivot/pivot函数及hive实现该功能

Oracle中pivot函数详解_实泽有之&#xff0c;无泽虚之的博客-CSDN博客pivot函数格式&#xff1a;pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))&#xff1b;pivot函数说明&#xff1a;实现将指定字段的值转换为列的效果。https://blog.csdn.net/qq_40018576/…

Win11的两个实用技巧系列之关闭分屏模式方法

怎么关闭Win11电脑分屏模式?Win11关闭分屏模式方法 有用户在使用电脑的时候不小心开启了电脑的分屏模式&#xff0c;导致自己无法正常的进行电脑操作了&#xff0c;本文就为大家带来了Win11关闭分屏模式方法&#xff0c;一起看看吧 Win11电脑分屏模式怎么关闭&#xff1f;有用…

千万不要乱操作了!医院机房这么做真高级

各类中心数据机房广泛分布于银行、库房、交通、电信、医院、教育等行业。系统故障和人为操作不当可能导致各种业务中断或数据丢失&#xff0c;进而影响企业业务的停滞和运行。 医院管理3大难题和挑战 01.缺乏预警、告警机制 医院在使用自动化监控系统之前&#xff0c;主要靠人…

【JVM】1. JVM与Java体系结构

文章目录 1.1. 前言&#x1f349;1.2. 参考书目&#x1f349;1.3. Java及JVM简介&#x1f349;1.4. Java发展的重大事件&#x1f349;1.5. 虚拟机与Java虚拟机&#x1f349;1.6. JVM的整体结构&#x1f349;1.7. Java代码执行流程&#x1f349;1.8. JVM的架构模型&#x1f349;…

MongoDB 查询文档中使用正则选择器($regex)

之前我们介绍过使用文本选择器&#xff08;$text&#xff09;查询文档&#xff0c;如果您需要进一步了解&#xff0c;可以参考&#xff1a; MongoDB 查询文档中使用文本选择器&#xff08;$text&#xff09;https://blog.csdn.net/m1729339749/article/details/130605491 本篇…

进程概念

目录 冯诺依曼体系结构 操作系统OS 系统调用和库函数概念 进程 task_struct内容分类 组织进程 初识fork 进程状态 Z(zombie)-僵尸进程 孤儿进程 进程优先级 环境变量 和环境变量相关的命令 环境变量的组织方式 程序地址空间 冯诺依曼体系结构 关于冯诺依曼&…

制定进度计划是成功项目管理的必由之路

项目经理王斌接到一个新项目&#xff0c;与各项目干系人没有建立有效的联系&#xff0c;他们无法了解项目进展情况。甚至连项目团队的参与人员自身对项目整体情况也没有清楚的认识&#xff0c;而只管自己那一部分&#xff0c;整个开发过程完全是一种黑盒模式&#xff0c;项目组…

windows提权

权限提升概述 1、提权介绍 权限提升&#xff1a;攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制&#xff0c;提权至高权限的管理员用户&#xff0c;从而获取对整个系统的控制权 windows&#xff1a;user --> system/administrator linux&#xff1a;user --&g…