将jar安装到本地mvn仓库
声明:仅限于将maven Repository下载的jar(使用maven打包的jar)安装到本地的maven仓库中,不保证全部成功,最初的时候添加依赖发现下载始终不成功,只能手动下载,但是手动下载完毕后,只能通过mvn install:install-file -Dfile=..这种方式安装jar包到仓库,实在是太过繁琐,仔细观察jar包后发现jar的坐标信息很容易从jar名称已经jar内部的pom.properties文件获得,代码如下
1 package installJarToMVN; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.InputStreamReader; 8 import java.util.Enumeration; 9 import java.util.jar.JarEntry; 10 import java.util.jar.JarFile; 11 import java.util.zip.ZipEntry; 12 13 /** 14 * 读取jar包内的pom.properties 获得groupid 15 * version,artifactId可以从jar包名称获取,也可以从pom.properties获取 16 * 17 * @author Tele 18 * 19 */ 20 21 public class InstallJar { 22 // 默认jar包路径,填写到目录 23 private static String jarPath = "d:/jartoMVN/"; 24 private static BufferedReader reader; 25 public static void main(String[] args) { 26 27 if (args.length > 0) { 28 if (args[0] != null && args[0].trim().length() > 0) { 29 jarPath = args[0]; 30 } 31 } 32 33 File dir = new File(jarPath); 34 if (!dir.exists()) { 35 throw new RuntimeException("jar包目录不存在!"); 36 } else { 37 if (!dir.isDirectory()) { 38 throw new RuntimeException("输入的参数必须为jar包所在目录!"); 39 } else { 40 File[] listFiles = dir.listFiles(); 41 if (listFiles.length == 0) { 42 throw new RuntimeException("当前目录下没有文件"); 43 } 44 45 String[] params = new String[4]; 46 // 遍历 47 for (int i = 0; i < listFiles.length; i++) { 48 File jarFile = listFiles[i]; 49 50 // 过滤非jar文件 51 if (!jarFile.getName().contains(".jar")) { 52 continue; 53 } 54 55 // 去除后缀,jar的名字可能含有多个 ".",hadoop-yarn-server-applicationhistoryservice-3.1.1.jar 56 String jarName = jarFile.getName(); 57 // 保留原始的jar名称 58 String orginalName = jarName; 59 60 // hadoop-yarn-server-applicationhistoryservice-3.1.1 61 jarName = jarName.substring(0, jarName.lastIndexOf(".")); 62 63 // 获得artifactId 64 String artifactId = jarName.substring(0, jarName.lastIndexOf("-")); 65 66 // 获得版本号 67 String version = jarName.substring(jarName.lastIndexOf("-") + 1); 68 69 // 获得groupId 70 71 // 拼接的完整路径 72 String groupId = readPomproperties(jarPath + orginalName); 73 if (groupId == null) { 74 throw new RuntimeException("获取groupId失败"); 75 } 76 groupId = groupId.split("=")[1]; 77 78 // 封装参数 79 params[0] = jarPath + orginalName; 80 params[1] = groupId; 81 params[2] = artifactId; 82 params[3] = version; 83 84 install(params); 85 86 } 87 88 } 89 90 } 91 92 } 93 94 95 /** 96 * 97 * @param path groupId=org.apache.hadoop 98 * @return 获得groupId,在pom.properties文件的第四行 99 */ 100 public static String readPomproperties(String path) { 101 JarFile jarFile = null; 102 String groupId = null; 103 // groupId在第四行 104 int number = 4; 105 try { 106 jarFile = new JarFile(path); 107 Enumeration<JarEntry> entries = jarFile.entries(); 108 while (entries.hasMoreElements()) { 109 JarEntry jarEntry = entries.nextElement(); 110 111 String name = jarEntry.getName(); 112 113 if (name.contains("pom.properties")) { 114 reader = new BufferedReader(new InputStreamReader(jarFile.getInputStream(jarEntry), "utf-8")); 115 String line = ""; 116 117 // 计行数 118 int count = 0; 119 120 while ((line = reader.readLine()) != null) { 121 122 count++; 123 if (count == 4) { 124 groupId = line; 125 } 126 } 127 128 } 129 } 130 131 } catch (IOException e) { 132 // TODO Auto-generated catch block 133 e.printStackTrace(); 134 } finally { 135 if (reader != null) { 136 try { 137 reader.close(); 138 } catch (IOException e) { 139 // TODO Auto-generated catch block 140 e.printStackTrace(); 141 } 142 } 143 if (jarFile != null) { 144 try { 145 jarFile.close(); 146 } catch (IOException e) { 147 // TODO Auto-generated catch block 148 e.printStackTrace(); 149 } 150 } 151 } 152 return groupId; 153 } 154 155 // 执行安装命令 156 public static void install(String[] params) { 157 // 拼接命令 158 String order = "mvn install:install-file" + " -Dfile=" + params[0] + " -DgroupId=" + params[1] 159 + " -DartifactId=" + params[2] + " -Dversion=" + params[3] + " -Dpackaging=jar"; 160 161 Runtime rt = Runtime.getRuntime(); 162 // 执行安装 163 System.out.println(order); 164 Process p; 165 try { 166 p = rt.exec("cmd.exe /c " + " " + order); 167 168 reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 169 String line; 170 // 输出进程 171 while ((line = reader.readLine()) != null) { 172 System.out.println(line); 173 } 174 175 if (reader != null) { 176 reader.close(); 177 } 178 179 // waitFor()是阻塞方法,等待外部命令执行结束 180 p.waitFor(); 181 182 p.destroy(); 183 p = null; 184 185 } catch (IOException e) { 186 // TODO Auto-generated catch block 187 e.printStackTrace(); 188 } catch (InterruptedException e) { 189 // TODO Auto-generated catch block 190 e.printStackTrace(); 191 } 192 193 } 194 195 }
测试结果:
1.eclipse中运行
2.打包成jar
3.可以指定目录.默认的目录为d:/jartoMVN/ ,直接拷贝路径时记得加上 "/"
jar包链接:https://files.cnblogs.com/files/tele-share/installjar2mvn.zip
转载于:https://www.cnblogs.com/tele-share/p/9945753.html
将jar安装到本地mvn仓库相关推荐
- 将本地 jar 安装到本地 maven 仓库
把要打包的 jar 放在本地目录下. 在 maven 中执行命令(IDEA 中可以选择 run in context ): mvn install:install-file-Dfile="j ...
- maven如何将本地jar安装到本地仓库
maven如何将本地jar安装到本地仓库 1.首先确认你的maven是否已经配置: 2.本地的jar包位置: 3.安装本地的jar到本地仓库: 命令: mvn install:install-file ...
- 如何能把 fastdfs-client-java的jar包安装到本地的仓库中
如何能把 fastdfs的jar包安装到本地的仓库中(因为中央仓库没有FASTDFS的jar包地址) 1,首先去我的github上下载下来fastdfs的压缩包 直接下载地址:https://gith ...
- maven私服、将项目发布到maven私服、从私服下载jar到本地仓库、将第三方jar安装到本地仓库和maven私服
上面启动start时,jdk1.9报错,解决方法参考:https://blog.csdn.net/qq_33638719/article/details/83064664 访问http://local ...
- Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决方法
Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决方法 参考文章: (1)Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决 ...
- 手动添加JAR包到本地Maven仓库
前言 仅适用于添加JAR包到本地Maven仓库. 本地仓库:工作设备上的maven仓库. 前置条件:jdk和maven均已安装完成.java -version和mvn -version命令均能够正确执 ...
- Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mv ...
- eclipse手动pom本地包_eclipse手动添加本地jar包到本地maven仓库
在使用maven进行构建项目时,有时候中央仓库不包含所需的jar包,就需要下载到本地后手动添加到本地仓库中.这里介绍下利用eclipse进行本地jar安装到maven本地仓库. 在Eclipse项目中 ...
- Maven : 将 Jar 安装到本地仓库和 Jar 上传到私服
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Jar的maven配置 <dependency> <groupId>org. ...
最新文章
- python deque双端队列的神奇用法
- 报错解决:Liquid Warning: Liquid syntax error (line 2): Expected dotdot but found id in {{(site.github.p
- 【c++】重载操作符
- We Chall-Training: Get Sourced-Writeup
- 如何读懂并写出装逼的函数式代码
- Android实现蝴蝶动画,蝴蝶飞舞- (补间动画+逐帧动画)
- flask Form表单数据传递与取值
- C++和Java函数传递数组参数比较
- 公司网站的访问量突破了每天PV1.5亿
- fences卸载_win10系统卸载fences的操作方法
- vue3.0引入element插件报错解决
- java 背单词系统_基于JAVA模拟背单词系统(含源文件)
- 特征值和奇异值的关系
- Scp全量远程拷贝(推送、拉取)
- 如何看待大数据「杀熟」?
- 初学python的体会心得-分享给入门Python小白的学习心得
- 【JY】No.7.1力学架构结构力学求解器(SM)使用教程
- 盛金公式(一元三次方程的解)
- c# - FileStream、StreamReader、StreamWriter
- 北京科技大学计算机保研,北京科技大学考研/保研怎么样?这些数据必须知道!...
热门文章
- 向微信公众号文章添加通知文件
- 2021年中国汽车座椅行业发展现状及进出口状况分析:我国汽车座椅出口数量再创新高 [图]
- Jquery each continu
- c语言程序设计试题汇编第三版勘误,《C语言程序设计》及《习题集》(姚合生等)勘误表.docx...
- dw如何把html转换成网址,我用flash做的网页,怎么把它在dw里变成html网页?
- 软件界面草图设计工具 mockupBuilder
- 红旗linux进不去系统,红旗Linux桌面10不能随系统直接升级成红旗Linux V11版本
- 高分考生学口腔和学计算机,川内高校今年录取最高分659分 为川大口腔医学专业录取...
- pycharm运行程序时在Python console窗口中运行
- 修改element单选框样式