热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

批量上传jar包到远程maven仓库

工具代码思路:遍历本地maven仓库文件夹中的.jar文件,通过正则表达式匹配获取jar包的groupId、artifactId、version、文件名等信息,通过调用cmd命令实

工具代码思路:遍历本地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/2145473-release-yp7ZyW
-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;
}
}
View Code

 



推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 本文介绍了如何使用OpenXML按页码访问文档内容,以及在处理分页符和XML元素时的一些挑战。同时,还讨论了基于页面的引用框架的局限性和超越基于页面的引用框架的方法。最后,给出了一个使用C#的示例代码来按页码访问OpenXML内容的方法。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • fileuploadJS@sectionscripts{<scriptsrc~Contentjsfileuploadvendorjquery.ui.widget.js ... [详细]
  • 用ESP32与Python实现物联网(IoT)火焰检测报警系统
    下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果 ... [详细]
  • 原文转自:http:blog.csdn.netchinasoftosgarticledetails7903045UploadAction.java:packagecr ... [详细]
  • UEditor可以如何直接复制word的图文内容到编辑器中
    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)j ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
author-avatar
和雅竹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有