springCloud使用maven集成nexus3.49

您所在的位置:网站首页 springcloud最新 springCloud使用maven集成nexus3.49

springCloud使用maven集成nexus3.49

#springCloud使用maven集成nexus3.49| 来源: 网络整理| 查看: 265

springCloud项目使用maven集成nexus故事背景基础概念什么是Maven什么是nexus实操setting文件配置项目内pom.xml配置jar上传maven插件上传mvn命令上传页面上传通过Rest的方式进行上传背景代码实例pom依赖上传代码jar包下拉

故事背景

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

基础概念 什么是Maven

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

什么是nexus

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

实操

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

setting文件配置 my-server user password aliyun aliyun maven mirror http://maven.aliyun.com/nexus/content/groups/public/ central my-proxy true http proxy.mycompany.com 8080 user password localhost|127.0.0.1 ${user.home}/.m2/repositoryfalseorg.apache.tomcat.maven UTF-8 项目内pom.xml配置

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

test_hostedReleaseshttp://xxx.xxx.xx.xxx:port/repository/test_hosted/test_snapshot_hostedSnapshothttp://xxx.xxx.xx.xxx:port/repository/test_snapshot_hosted/ jar上传

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

maven插件上传

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

mvn命令上传

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

mvn deploy:deploy-file -DgroupId= -DartifactId= \ -Dversion= -Dpackaging= -Dfile= \ -DrepositoryId=nexus -Durl=

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

大家使用的时候,请将、、和替换为您的Maven项目的实际值, 将替换为要上传的文件的路径。将替换为您Nexus服务器的URL地址。 页面上传

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

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

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

背景

最近研究了通过maven集成nexus,使用nexus做仓库管理。除了网上常见的几种上传方式之外,还研究了网上比较少的接口上传的方式,将代码放到下面,大家感兴趣的话可以结合注释进行研究。

代码实例 pom依赖 org.apache.httpcomponentshttpcoreorg.springframeworkspring-web 上传代码 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 requestMap = new LinkedMultiValueMap(); // 创建请求参数MaprequestMap.add("file", resource); // 添加文件系统资源对象到请求参数Map中HttpHeaders headers = new HttpHeaders(); // 创建HttpHeaders对象headers.setContentType(MediaType.MULTIPART_FORM_DATA); // 设置Content-Type为multipart/form-dataHttpEntity requestEntity = new HttpEntity(requestMap, headers); // 创建HttpEntity对象,用于发送POST请求test(restTemplate, requestEntity); // 调用test方法发送请求 }public static void test(RestTemplate restTemplate, HttpEntity requestEntity){String url = "http://xxx.xxx.xx.xxx:port/repository/test_snapshot_hosted/"; // Nexus仓库URLString groupId = "com.mycompany"; // Maven groupIdString artifactId = "my-artifact"; // Maven artifactIdString 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仓库URLResponseEntity responseEntity = restTemplate.exchange(nexusUrl, HttpMethod.PUT, requestEntity, String.class); // 发送PUT请求,将文件上传到Nexus仓库 }

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

jar包下拉

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3