读取jar文件的sha1码,请求maven官方的solrsearch接口查询该jar文件所对应的maven坐标信息
2017-04-20 13:56
429 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
参考: http://www.sha1-online.com/sha1-java/
http://search.maven.org/#api
import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.apache.commons.io.IOUtils; import java.io.*; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Map; /** * 读取jar文件的sha1码,请求maven官方的solrsearch接口查询该jar文件所对应的maven坐标信息 * Created by Nihaorz on 2017/4/20. */ public class MakeMavenInfo { public static void main(String[] args) throws IOException, NoSuchAlgorithmException { long start = System.currentTimeMillis(); File dir = new File("C:\\Users\\Administrator\\Desktop\\jars"); for (File jar : dir.listFiles()) { String sha1 = getSha1ByFile(jar); Map<String, String> map = getMavenInfoBySha1(jar, sha1); System.out.println(map); } long end = System.currentTimeMillis(); System.out.println("耗时:" + (end-start)/1000 + "秒"); } /** * 根据jar包输入流获取该文件的sha1码 * @param file * @return * @throws IOException * @throws NoSuchAlgorithmException */ public static String getSha1ByFile(File file) throws IOException, NoSuchAlgorithmException { MessageDigest sha1 = MessageDigest.getInstance("SHA1"); FileInputStream fis = new FileInputStream(file); byte[] data = new byte[1024]; int read; while ((read = fis.read(data)) != -1) { sha1.update(data, 0, read); } byte[] hashBytes = sha1.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < hashBytes.length; i++) { sb.append(Integer.toString((hashBytes[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } /** * 根据sha1码请求接口拿到该jar包对应的maven坐标信息 * @param jar * @param sha1 * @return */ public static Map<String, String> getMavenInfoBySha1(File jar, String sha1){ Map<String, String> map = new HashMap<String, String>(); String url = "http://search.maven.org/solrsearch/select?q=1:\""; StringBuilder sb = new StringBuilder(); sb.append(url).append(sha1).append("\"&rows=20&wt=json"); map.put("jarName", jar.getName()); try { String jsonStr = IOUtils.toString(new URL(sb.toString())); JsonObject json = new JsonParser().parse(jsonStr).getAsJsonObject(); JsonObject obj = json.getAsJsonObject("response").getAsJsonArray("docs").get(0).getAsJsonObject(); map.put("groupId", obj.get("g").getAsString()); map.put("artifactId", obj.get("a").getAsString()); map.put("version", obj.get("v").getAsString()); map.put("packaging", obj.get("p").getAsString()); map.put("result", "true"); } catch (Exception e) { e.printStackTrace(); map.put("result", "false"); System.out.println(sb); } return map; } }
参考: http://www.sha1-online.com/sha1-java/
http://search.maven.org/#api
相关文章推荐
- Java用jdom.jar解析读取XML文件信息
- XSLT2.0 从外部读取信息并分析生成对应文件.采用xsl:for-each-group进行排序输出
- wxpython实现界面,读取excel配置文件并查询道具信息
- 经纬度转换坐标接口 查询位置信息
- 如何把接口配置信息存在本地并从文件中读取配置信息
- 读取jar包内部配置文件信息的解析
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- Maven打包jar后文件读取资源文件
- Java 读取JAR文件信息-PathMatchingResourcePatternResolver 解析classpath*:
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- ionic3+Angular4实现接口请求及本地json文件读取示例
- vbs读取文件内的信息将对应数据拷贝到其他路径
- 从.properties配置文件中读取url路径(jdbc的参数和接口请求url)
- 百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息
- 从jar包中读取配置文件信息
- 在asp.net中读取XML文件信息的4种方法
- 在asp.net中读取XML文件信息的4种方法
- 从文件中读取文本信息
- 用asp.net如何实现自动读取mp3文件信息
- 在asp.net中读取XML文件信息的4种方法(ZT)