批量将本地的maven仓库导入到nexus3中

2023-11-21 17:40

本文主要是介绍批量将本地的maven仓库导入到nexus3中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前提
浏览器登录nexus管理界面–>设置图标–>Repository–>Repositories–>maven-releases–>Hosted–>请选择‘Allow redeploy’策略,(默认是disable策略,然后保存。 请注意,不同版本的nexus,进入的路径可能有细微区别)

image

  • 依赖
     <dependency>
         <groupId>com.squareup.okhttp3</groupId>
         <artifactId>okhttp</artifactId>
         <version>3.8.1</version>
     </dependency>
     

  • 代码(需要在代码中修改nexus3的请求url和base64加密的字符串)

     

    package com.test;

    import okhttp3.*;

    import java.io.File;
    import java.io.IOException;
    import java.util.*;

    public class LocalRepositoryImport {

        /**
         * 本地仓库路径
         */
        private static String basePath = "D:\\soft\\apache-maven-3.6.2\\repo\\";

        /**
         * SNAPSHOT版本
         *
         */
        private static String check = "SNAPSHOT";

        /**
         * 忽略jar文件
         */
        private static String[] ignorePath = {};

        private static List<String> jarFiles = new ArrayList<>();

        /**
         * http://192.168.8.103:30022/ web访问地址
         */
        private static String RELEASES_URL = "http://192.168.8.103:30022/service/rest/v1/components?repository=maven-releases";

        private static String SNAPSHOTS_URL = "http://192.168.8.103:30022/service/rest/v1/components?repository=maven-snapshots";

        /**
         * http请求处理器.
         */
        private static final OkHttpClient CLIENT = new OkHttpClient().newBuilder().build();


        public static void main(String[] args) throws IOException {
            loadJarFilePath(basePath);
            uploadJarFile();
        }

        /**
         * 查找jar文件
         *
         * @param basePath
         */
        private static void loadJarFilePath(String basePath) {
            File tmp = new File(basePath);
            if (!tmp.exists()) {
                return;
            }
            File[] files = tmp.listFiles();
            for (File file : files) {
                if (file.getName().endsWith(".jar")) {
                    //加入到待上传jar文件列表
                    jarFiles.add(file.getAbsolutePath());
                }
                if (file.isDirectory()) {
                    //深搜遍历
                    loadJarFilePath(file.getAbsolutePath());
                }
            }
        }

        /**
         * 上传文件
         *
         * @throws IOException
         */
        private static void uploadJarFile() throws IOException {
            if (jarFiles.size() > 0) {
                for (String jarFile : jarFiles) {
                    String url = jarFile.contains(check) ? SNAPSHOTS_URL : RELEASES_URL;

                    String spitPath = jarFile.substring(basePath.length());
                    Map<String, String> textMap = getTextMap(spitPath);
                    RequestBody formBody = getFormBody(jarFile, textMap.get("fileName"),
                            textMap.get("groupId"), textMap.get("artifactId"), textMap.get("version"));

                    Request request = new Request.Builder()
                            .url(url)
                            .method("POST", formBody)
                            //YWRtaW4lM0FhZG1pbjEyMw== BASE64加密-->格式 用户名:密码
                            .addHeader("Authorization", "Basic YWRtaW4lM0FhZG1pbjEyMw==")
                            .build();
                    Response response = CLIENT.newCall(request).execute();
                    String s = response.body().string();
                    if (s != null && !s.equals("")) {
                        System.out.println("错误信息:" + s + "\n失败jar文件: " + jarFile);
                    }
                }
            }
        }


        private static Map<String, String> getTextMap(String filePath) {
            Map<String, String> ret = new HashMap<>();
            String[] split = filePath.split("\\\\");
            ret.put("fileName", split[split.length - 1]);
            ret.put("version", split[split.length - 2]);
            ret.put("artifactId", split[split.length - 3]);
            StringJoiner groupId = new StringJoiner(".");
            for (int i = 0; i < split.length - 3; i++) {
                groupId.add(split[i]);
            }
            ret.put("groupId", groupId.toString());
            return ret;
        }


        private static RequestBody getFormBody(String jarFilePath, String fileName, String groupId, String artifactId, String version) {
            MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
            RequestBody jarFileBody = RequestBody.create(MediaType.parse("application/octet-stream"), new File(jarFilePath));
            builder.addFormDataPart("maven2.asset1", fileName, jarFileBody);
            builder.addFormDataPart("maven2.groupId", groupId);
            builder.addFormDataPart("maven2.artifactId", artifactId);
            builder.addFormDataPart("maven2.version", version);
            builder.addFormDataPart("maven2.asset1.extension", "jar");
            return builder.build();
        }

    }


    原文转载自:https://www.cnblogs.com/anlalala/p/15608073.html

 

这篇关于批量将本地的maven仓库导入到nexus3中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403972

相关文章

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

Java实现批量化操作Excel文件的示例代码

《Java实现批量化操作Excel文件的示例代码》在操作Excel的场景中,通常会有一些针对Excel的批量操作,这篇文章主要为大家详细介绍了如何使用GcExcel实现批量化操作Excel,感兴趣的可... 目录前言 | 问题背景什么是GcExcel场景1 批量导入Excel文件,并读取特定区域的数据场景2