首页 > 其他分享 >maven推送离线jar包

maven推送离线jar包

时间:2023-12-15 20:55:05浏览次数:27  
标签:repoUrl String 离线 jar maven File subFile repoId

  一、修改maven的settings.xml文件

<servers>
    <server>
      <id>maven-releases</id>
      <username>admin</username>
      <password>admin</password>
    </server>
</servers>

  二、生成脚本

package com.xbd;

import java.io.*;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Repository {

    public static void main(String[] args) throws Exception {
        //包目录
        String repositoryPath = "${user.home}/.m2/repository";
        String batPath = "<outPath>\\repository.bat";
        //基础环境
        String repoUrl="http://127.0.0.1:8081/repository/maven-releases/";
        String repoId="maven-releases";
        writeCmd(repositoryPath, batPath, repoUrl, repoId);

    }

    //写入命令
    private static void writeCmd(String repositoryPath, String batPath, String repoUrl, String repoId) throws Exception {
        String jarCmd = "mvn deploy:deploy-file " +
                "-Durl=''{0}'' " +
                "-DrepositoryId=''{1}'' " +
                "-Dfile=''{2}'' " +
                "-DpomFile=''{3}'' " +
                "-DgroupId=''{4}'' " +
                "-DartifactId=''{5}'' " +
                "-Dversion=''{6}'' " +
                "-Dpackaging=jar " +
                "-DgeneratePom=false";
        String pomCmd = "mvn deploy:deploy-file " +
                "-Durl=''{0}'' " +
                "-DrepositoryId=''{1}'' " +
                "-Dfile=''{2}'' " +
                "-DgroupId=''{3}'' " +
                "-DartifactId=''{4}'' " +
                "-Dversion=''{5}'' " +
                "-Dpackaging=pom ";
        List<String> cmdList = new ArrayList<>();
        generateCommand(new File(repositoryPath), null, jarCmd, pomCmd, repoUrl, repoId, cmdList);
        if (cmdList.size() > 0) {
            BufferedWriter writer = new BufferedWriter(new FileWriter(batPath));
            for (String cmd : cmdList) {
                writer.append(cmd);
                writer.newLine();
            }
            writer.flush();
            writer.close();
        }

    }

    //生成命令
    private static void generateCommand(File repositoryFile, String tmpDir, String jarCmd, String pomCmd, String repoUrl, String repoId, List<String> cmdList) throws Exception {
        //1、判断目录
        if (repositoryFile.isDirectory()) {
            //2、获取文件目录
            File[] files = repositoryFile.listFiles();
            if (files != null && files.length > 0) {
                //3、判断是否为最后一层
                if (Arrays.stream(files).allMatch(File::isFile)) {
                    //处理目录为groupId,artifactId,version
                    String[] dirs = tmpDir.split("&");
                    String version = dirs[dirs.length - 1];
                    String artifactId = dirs[dirs.length - 2];
                    String groupId = String.join(".", Arrays.copyOfRange(dirs, 0, dirs.length - 2));
                    String jarName = artifactId + "-" + version;
                    //路径
                    String pomFilePath = tmpDir.replaceAll("&", "\\" + File.separator) + File.separator + jarName + ".pom";
                    //4、判断是否存在jar
                    if (Arrays.stream(files).anyMatch(subFile -> subFile.getName().endsWith(".jar"))) {
                        //jar路径
                        String jarFilePath = tmpDir.replaceAll("&", "\\" + File.separator) + File.separator + jarName + ".jar";
                        String uploadCmd = MessageFormat.format(jarCmd, repoUrl, repoId, jarFilePath, pomFilePath, groupId, artifactId, version);
                        cmdList.add(uploadCmd);
                    } else if (Arrays.stream(files).anyMatch(subFile -> subFile.getName().endsWith(".pom"))){
                        //脚本
                        String uploadCmd = MessageFormat.format(pomCmd, repoUrl, repoId, pomFilePath, groupId, artifactId, version);
                        cmdList.add(uploadCmd);
                    }
                } else {
                    for (File subFile : files) {
                        generateCommand(subFile, tmpDir != null ? tmpDir + "&" + subFile.getName() : subFile.getName(), jarCmd, pomCmd, repoUrl, repoId, cmdList);
                    }
                }
            }
        }
    }
}

  三、然后在${user.home}/.m2/repository目录下执行repository.bat脚本即可。

  四、思路说明:

  1)先在默认的settings.xml中加入服务的认证,注意ID要一样。

  2)在项目中加入需要添加的依赖部分,通过代码生成脚本。脚本包含jar和pom。

  3)在执行生成的repository.bat脚本来实现离线jar的上传。

  

标签:repoUrl,String,离线,jar,maven,File,subFile,repoId
From: https://www.cnblogs.com/ll409546297/p/17904172.html

相关文章

  • KubeKey 离线部署 KubeSphere v3.4.1 和 K8s v1.26 实战指南
    作者:运维有术前言知识点定级:入门级了解清单(manifest)和制品(artifact)的概念掌握manifest清单的编写方法根据manifest清单制作artifactKubeKey离线集群配置文件编写KubeKey离线部署HarborKubeKey离线部署KubeSphere和K8sKubeKey离线部署常见问题排......
  • Spring Boot应用启动 java -jar
    1.系统参数的标准格式为:-Dargname=argvalue,多个参数之间用空格隔开,如果参数值中间有空格,则用引号括起来#1.基本java-jarrun.jar#2.指定java路径nohup/opt/mdw/jdk1.8.0_241/bin/java-jarrun.jar#3.如果中文乱码,指定jar包的运行环境的编码java-Dfile.encoding=utf-8-......
  • 项目使用第三方jar包SDK
    方式一、使用IDEA程序引入jar包1、首先,点他! 2、然后,点他! 3、再然后,点他! 4、最后,在这里选择自己需要上传的Jar包,收工结束!方式二、通过Maven添加到本地仓库,然后在运用依赖导入项1、首先,找到自己所在jar包的目录并输入cmd唤出控制台  2、然后,根据实际情况在控制台......
  • kubesphere 的 流水线maven 模板缺少 kubectl解决
    最开始解决方案是maven的pod里通过在线下载kubectl命令 发现每次构建后端服务,都去官网下载kubectl命令相当慢。既然用到maven模板,遂将master节点的kubectl命令通过hostpath挂载到maven的pod模板里面。问题解决。 agent模板cm配置【jenkins-casc-config】在【kubes......
  • 【JAVA】使用intellij IDEA将项目打包为jar包
    当你有一个能正常编译的项目,以springboot为例,有两步步骤打包配置打包一、打包配置1.点击右上角快捷按钮/文件-->项目结构,打开项目结构设置  2.项目结构-->Artifacts,如图所示选择 3.在CreateJARfromModules配置, 4.配置jar输出相关设置 二、打包1.构建......
  • 【Centos】Centos 7.6 安装 Maven 3.6.3
    1  前言继续安装我们的Maven3.6.3,为了给安装Nacos做铺垫。https://archive.apache.org/dist/maven/maven-3/2 安装步骤2.1 下载压缩包wgethttps://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz2.2 解压缩tar-zx......
  • 一篇搞定发布自己的类库到Maven中央仓库
    在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地?本文将通过一步步的操作带领大家讲自己的开......
  • PWA 离线方案研究报告
    本文并不是介绍如何将一个网页配置成离线应用并支持安装下载的。研究PWA的目的仅仅是为了保证用户的资源可以直接从本地加载,来忽略全国或者全球网络质量对页面加载速度造成影响。当然,如果页面上所需的资源,除了资源文件外并不需要任何的网络请求,那它除了不支持安装到桌面,已经算是一......
  • jar包运行方式
    1.运行jar包,日志即时打印输出在控制台,退出会关闭日志输出和应用服务(Ctrl+C退出)java-jar 文件名.jar 2.运行jar包,日志即时打印输出在控制台,退出只关闭日志输出,不关闭应用服务(Ctrl+c只退出日志打印,不关闭服务)java-jar 文件名.jar&日制效果同上3.运行jar包,没有日志输......
  • 发布jar包到maven中央仓库
    1.环境在网上找的很多文章中写得都有很多问题,这里记录一下最近一次成功地发布jar包到maven中央仓库的过程。并附带上每一个步骤官方的指导链接。系统:mac(windows系统在下载辅助工具时不太一样,在配置上和mac系统没有区别)IDE:IntelliJIDEAJDK:1.8maven:3.8.1(IDEA自带的版本)代......