声明:仅限于将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仓库相关推荐

  1. 将本地 jar 安装到本地 maven 仓库

    把要打包的 jar 放在本地目录下. 在 maven 中执行命令(IDEA 中可以选择 run in context ): mvn install:install-file-Dfile="j ...

  2. maven如何将本地jar安装到本地仓库

    maven如何将本地jar安装到本地仓库 1.首先确认你的maven是否已经配置: 2.本地的jar包位置: 3.安装本地的jar到本地仓库: 命令: mvn install:install-file ...

  3. 如何能把 fastdfs-client-java的jar包安装到本地的仓库中

    如何能把 fastdfs的jar包安装到本地的仓库中(因为中央仓库没有FASTDFS的jar包地址) 1,首先去我的github上下载下来fastdfs的压缩包 直接下载地址:https://gith ...

  4. maven私服、将项目发布到maven私服、从私服下载jar到本地仓库、将第三方jar安装到本地仓库和maven私服

    上面启动start时,jdk1.9报错,解决方法参考:https://blog.csdn.net/qq_33638719/article/details/83064664 访问http://local ...

  5. Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决方法

    Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决方法 参考文章: (1)Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决 ...

  6. 手动添加JAR包到本地Maven仓库

    前言 仅适用于添加JAR包到本地Maven仓库. 本地仓库:工作设备上的maven仓库. 前置条件:jdk和maven均已安装完成.java -version和mvn -version命令均能够正确执 ...

  7. Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mv ...

  8. eclipse手动pom本地包_eclipse手动添加本地jar包到本地maven仓库

    在使用maven进行构建项目时,有时候中央仓库不包含所需的jar包,就需要下载到本地后手动添加到本地仓库中.这里介绍下利用eclipse进行本地jar安装到maven本地仓库. 在Eclipse项目中 ...

  9. Maven : 将 Jar 安装到本地仓库和 Jar 上传到私服

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Jar的maven配置 <dependency> <groupId>org. ...

最新文章

  1. python deque双端队列的神奇用法
  2. 报错解决:Liquid Warning: Liquid syntax error (line 2): Expected dotdot but found id in {{(site.github.p
  3. 【c++】重载操作符
  4. We Chall-Training: Get Sourced-Writeup
  5. 如何读懂并写出装逼的函数式代码
  6. Android实现蝴蝶动画,蝴蝶飞舞- (补间动画+逐帧动画)
  7. flask Form表单数据传递与取值
  8. C++和Java函数传递数组参数比较
  9. 公司网站的访问量突破了每天PV1.5亿
  10. fences卸载_win10系统卸载fences的操作方法
  11. vue3.0引入element插件报错解决
  12. java 背单词系统_基于JAVA模拟背单词系统(含源文件)
  13. 特征值和奇异值的关系
  14. Scp全量远程拷贝(推送、拉取)
  15. 如何看待大数据「杀熟」?
  16. 初学python的体会心得-分享给入门Python小白的学习心得
  17. 【JY】No.7.1力学架构结构力学求解器(SM)使用教程
  18. 盛金公式(一元三次方程的解)
  19. c# - FileStream、StreamReader、StreamWriter
  20. 北京科技大学计算机保研,北京科技大学考研/保研怎么样?这些数据必须知道!...

热门文章

  1. 向微信公众号文章添加通知文件
  2. 2021年中国汽车座椅行业发展现状及进出口状况分析:我国汽车座椅出口数量再创新高 [图]
  3. Jquery each continu
  4. c语言程序设计试题汇编第三版勘误,《C语言程序设计》及《习题集》(姚合生等)勘误表.docx...
  5. dw如何把html转换成网址,我用flash做的网页,怎么把它在dw里变成html网页?
  6. 软件界面草图设计工具 mockupBuilder
  7. 红旗linux进不去系统,红旗Linux桌面10不能随系统直接升级成红旗Linux V11版本
  8. 高分考生学口腔和学计算机,川内高校今年录取最高分659分 为川大口腔医学专业录取...
  9. pycharm运行程序时在Python console窗口中运行
  10. 修改element单选框样式