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 仓库的更多相关文章

  1. Maven使用deploy上传jar包到远程库

    一.环境准备 首先需要在本地环境安装好maven,并且在环境变量配置好 二.配置远程库认证 需要在./conf/setting.xml(maven的配置文件,不要弄错)中配置需要远程上传库的地址,用户 ...

  2. [转] 手动上传jar包到远程仓库 (maven deploy)

    [From] https://my.oschina.net/360yg/blog/1588899 前言:通常允许上传的远程仓库有两种:Snapshots和Releases,分别为快照版仓库和稳定版仓库 ...

  3. Maven使用deploy上传jar包到远程库 以Oracle驱动为例

    一.首先要得到Oracle JDBC Driver 1.通过Oracle官方网站下载相应版本:http://www.oracle.com/technetwork/database/features/j ...

  4. 部署Jar包到远程Maven仓库

    在使用maven开发工程时,模块A可能会依赖模块B的jar包,如果两个模块都是在一个工程里,只需要在模块A的pom文件中加入模块B的依赖信息,模块A就可以加载模块B的jar包.但如果模块A与模块B在不 ...

  5. maven安装 maven上传jar包到库里面

    maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...

  6. Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】

    搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找->私有仓库->中心仓库- 然而,我们的本地仓库常常没有想要的 ...

  7. 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库

    参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...

  8. 实测Maven上传jar包到私服的方法归纳

    Hello,各位小伙伴大家好,我是小栈君.好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间. 所以还请大家多多见谅,下一期的分享 ...

  9. 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库

    1.搭建Maven私服背景 公司还是按捺不住,要搭建一个自己的Maven本地仓库,可以让开发人员down架包,从内网还是快很多. 这样公司的maven本地仓库就是 开发人员自己电脑上的maven仓库 ...

  10. gradle上传jar包到maven公共仓库

    首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...

随机推荐

  1. 华为ar502H物联网边缘计算网关,在容器内控制/dev/do0开关命令

    执行以下命令进行开关do继电开关,可以听见电位器声音. echo -en  "\x01" > /dev/do0 echo -en  "\x00" > ...

  2. 1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种?

    大家好,我是三友~~ 故事的开头是这样的 最近有个兄弟私信了我一张截图 我一看截图内容,好家伙,原来是我一年多前立的flag 倒不是我忘了这件事,我后来也的确写了一篇的关于RocketMQ运行的原理的 ...

  3. skywalking插件工作原理剖析

    1. 官方插件二次开发 前面在介绍skywalking-agent目录时,提到了它有一个插件目录,并支持动态的开发插件.其实skywalking默认已经提供大部分框架的插件了,一般情况下不需要额外开发 ...

  4. k8s安装Ingress-Nginx

    目前,DHorse(https://gitee.com/i512team/dhorse)只支持Ingress-nginx的Ingress实现,下面介绍Ingress-nginx的安装过程. 下载安装文 ...

  5. 试试这 6 个小技巧,提升 EF Core 性能

    Entity FrameWork(简称 EF)以面向对象的方式操作数据库给开发人员带来了很大的便利性,但其性能问题从面世以来就一直就被广大的 .NET 生态开发技术人员所吐槽,然而,它真的那么不堪使用 ...

  6. 让 sdk 包静默升级的 SAO 操作,你见过几种?

    拓展阅读 让 sdk 包静默升级的 SAO 操作,你见过几种? 业务背景 有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包. 但是每一次升级都非常痛苦,也不可能写一 ...

  7. springboot-jpa获取session

    springboot获取hibernate的session进行更精细的SQL操作,默认的jpa并不能满足一些复杂需求(可能是我把需求设计复杂了) 通过查看JpaRepository的底层实现,发现是通 ...

  8. 神经网络优化篇:理解mini-batch梯度下降法(Understanding mini-batch gradient descent)

    理解mini-batch梯度下降法 使用batch梯度下降法时,每次迭代都需要历遍整个训练集,可以预期每次迭代成本都会下降,所以如果成本函数\(J\)是迭代次数的一个函数,它应该会随着每次迭代而减少, ...

  9. 欢迎使用CSDN-markdown编辑器测试

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  10. 限制左键拖拽图片阴影vue

    <template> <div> <img ref="image" :src="imageUrl" :style="im ...