批量上传 jar 包到远程 maven 仓库
mvn deploy命令:
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=log-lib-1.1.jar -DgroupId=com.suncreate -DartifactId=log-lib -Dversion=1.1 -Dpackaging=jar -Durl=https://packages.aliyun.com/maven/repository/xxxxxxxxx -DrepositoryId=rdc-releases --settings D:\Java\maven-repository\settings.xml
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=hadoop-common-3.1.1.jar -DgroupId=org.apache.hadoop -DartifactId=hadoop-common -Dversion=3.1.1 -Dclassifier=huawei -Dpackaging=jar -Durl=https://packages.aliyun.com/maven/repository/xxxxxxxxx -DrepositoryId=rdc-releases --settings D:\Java\maven-repository\settings.xml
注意:-Dfile不是绝对路径
工具代码思路:遍历本地maven仓库文件夹中的.jar文件,通过正则表达式匹配获取jar包的groupId、artifactId、version、文件名等信息,通过调用cmd命令实现上传
工具是用C#写的,代码:


private void mavenUploads()
{
Task.Run(() =>
{
try
{
//string classifier = string.Empty;
string classifier = "huawei";
string[] files = Directory.GetFiles(@"D:\Java\maven-repository", "*" + classifier + ".jar", SearchOption.AllDirectories);
Log("文件总数:" + files.Length.ToString()); Regex regex = new Regex(@"^D:\\Java\\maven-repository\\([\\a-zA-Z0-9-]+)\\([a-zA-Z0-9-_\.]+)\\([0-9][a-zA-Z0-9-_\.]*)\\([a-zA-Z0-9-_\.]+" + classifier + @"\.jar)$", RegexOptions.IgnoreCase);
int count = 0;
foreach (string file in files)
{
Match m = regex.Match(file);
if (m.Success)
{
string dgroupId = m.Groups[1].Value.Replace("\\", ".");
string dartifactId = m.Groups[2].Value;
string dversion = m.Groups[3].Value;
string fileName = m.Groups[4].Value; string tempFileName = fileName; if (fileName.Contains("-sources.jar"))
{
continue;
}
if (fileName.Contains("-javadoc.jar"))
{
continue;
}
if (!string.IsNullOrWhiteSpace(classifier))
{
tempFileName = @"D:\temp\" + fileName.Replace("-" + classifier + ".jar", ".jar");
} if (!File.Exists(tempFileName))
{
File.Copy(file, tempFileName, true);
bool result = mavenUpload(tempFileName, dgroupId, dartifactId, dversion, classifier);
if (result)
{
count++;
Log("已成功上传,count=" + count + ",文件名:" + tempFileName);
}
else
{
count++;
Log("上传失败,count=" + count + ",文件名:" + tempFileName);
}
}
else
{
count++;
Log("无需重复上传,count=" + count + ",文件名:" + file);
}
}
else
{
count++;
Log("不匹配已跳过,count=" + count + ",文件名:" + file);
}
} Log("完成");
}
catch (Exception ex)
{
Log("出错:" + ex.Message + "\r\n" + ex.StackTrace);
}
});
} private bool mavenUpload(string dfile, string dgroupId, string dartifactId, string dversion, string dclassifier)
{
if (!string.IsNullOrWhiteSpace(dclassifier))
{
dclassifier = "-Dclassifier=" + dclassifier;
}
else
{
dclassifier = string.Empty;
} string cmdStr = string.Format(@"
mvn deploy:deploy-file
-Dmaven.test.skip=true
-Dfile={0}
-DgroupId={1}
-DartifactId={2}
-Dversion={3}
{4}
-Dpackaging=jar
-Durl=https://packages.aliyun.com/maven/repository/xxxxxxxxx
-DrepositoryId=rdc-releases
--settings D:\Java\maven-repository\settings.xml",
dfile, dgroupId, dartifactId, dversion, dclassifier); cmdStr = cmdStr.Replace("\r\n", "");
bool result = runCmd(cmdStr);
return result;
} private bool runCmd(string cmdStr)
{
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
//接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
//输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
//启动程序
p.Start(); //向cmd窗口发送输入信息
p.StandardInput.WriteLine(cmdStr);
p.StandardInput.WriteLine("exit"); p.StandardInput.AutoFlush = true; //获取输出信息
string strOuput = p.StandardOutput.ReadToEnd(); //等待程序执行完退出进程
p.WaitForExit();
p.Close(); if (strOuput.Contains("ERROR"))
{
Log(strOuput);
return false;
}
else
{
return true;
}
}
批量上传 jar 包到远程 maven 仓库的更多相关文章
- Maven使用deploy上传jar包到远程库
一.环境准备 首先需要在本地环境安装好maven,并且在环境变量配置好 二.配置远程库认证 需要在./conf/setting.xml(maven的配置文件,不要弄错)中配置需要远程上传库的地址,用户 ...
- [转] 手动上传jar包到远程仓库 (maven deploy)
[From] https://my.oschina.net/360yg/blog/1588899 前言:通常允许上传的远程仓库有两种:Snapshots和Releases,分别为快照版仓库和稳定版仓库 ...
- Maven使用deploy上传jar包到远程库 以Oracle驱动为例
一.首先要得到Oracle JDBC Driver 1.通过Oracle官方网站下载相应版本:http://www.oracle.com/technetwork/database/features/j ...
- 部署Jar包到远程Maven仓库
在使用maven开发工程时,模块A可能会依赖模块B的jar包,如果两个模块都是在一个工程里,只需要在模块A的pom文件中加入模块B的依赖信息,模块A就可以加载模块B的jar包.但如果模块A与模块B在不 ...
- maven安装 maven上传jar包到库里面
maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...
- Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】
搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找->私有仓库->中心仓库- 然而,我们的本地仓库常常没有想要的 ...
- 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...
- 实测Maven上传jar包到私服的方法归纳
Hello,各位小伙伴大家好,我是小栈君.好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间. 所以还请大家多多见谅,下一期的分享 ...
- 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
1.搭建Maven私服背景 公司还是按捺不住,要搭建一个自己的Maven本地仓库,可以让开发人员down架包,从内网还是快很多. 这样公司的maven本地仓库就是 开发人员自己电脑上的maven仓库 ...
- gradle上传jar包到maven公共仓库
首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...
随机推荐
- C语言从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。
#include<stdio.h> void main() { int y, n, s = 0;//定义变量 scanf_s("%d-%d", &y, & ...
- JAVAweek5
学习内容 进制 1.(十进制):752=2*10(0)+5*10(1)0+7*10(2)=752 (二进制):1011(二进制的数)=1*2(0)+1*2(1)+0*2(2)+1*2(3) = 1 ...
- 【Spring Boot】【外包杯】学习day01 | 项目目录结构划分以及代码分层
起因:扒了一个开源的项目,但是啃起来很硬,所以决定开始学习相关的知识. 我们之前的SSM项目,搭建过程较为繁琐: 1)配置 web.xml,加载 spring 和 spring mvc 2)配置数据库 ...
- RTMP协议学习——Message与Chunk解读
前言 之前通过对抓包数据的学习和分析,对RTMP协议有了一个整体的认知,大致了解了RTMP从建立连接到播放视频的流程,文章请看<RTMP协议学习--从握手到播放>.但是对于RTMP消息传输 ...
- 全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
JSSDK使用步骤 步骤一:绑定安全域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入JS ...
- [ARC137E] Baker
Problem Statement Snuke runs a bakery. He is planning for the next $N$ days. Let us call these days ...
- 关于C#反射概念,附带案例!
反射 C#中的反射是一种使程序在运行时能够动态地获取类型信息并调用其成员的技术.通过反射,程序可以在运行时进行类型的动态加载.创建对象.调用方法和属性,以及访问和修改字段等.反射可以使程序更加灵活,但 ...
- django数据库事务操作celery任务注意事项
from django.db import transaction from django.http import HttpResponseRedirect @transaction.atomic d ...
- 安装华企盾DSC防泄密软件:编辑文件不加密常见问题,运维工程师必看
1.先查看客户端日志主进程是否是加密进程.日志中是不是勾选智能半透明.加密类型是否有添加 2.用procmon监控保存的文件找出writefile的进程是否有添加,进程树是否有父进程,加密类型是否正确 ...
- 华企盾DSC由于半透明软件设置了需要管理员权限打开导致半透明打不开加密文件
解决方法: 1.右键该应用程序->属性->兼容性,去掉[以管理员权限运行此程序] 2.也可以打开控制面板->系统和安全->用户账户控制设置调至最低