批量将本地的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

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私