Created
September 17, 2017 02:35
-
-
Save hsipeng/8a01cbd49c401ddb58d3902d3bce436b to your computer and use it in GitHub Desktop.
lib下的jars包转换为pom.xml中的依赖工具类
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.user.test; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.FileNotFoundException; | |
import java.io.FileWriter; | |
import java.io.IOException; | |
import java.io.Writer; | |
import java.util.ArrayList; | |
import java.util.Date; | |
import java.util.List; | |
import java.util.jar.JarInputStream; | |
import java.util.jar.Manifest; | |
import org.dom4j.Document; | |
import org.dom4j.DocumentHelper; | |
import org.dom4j.Element; | |
import org.dom4j.dom.DOMElement; | |
import org.dom4j.io.OutputFormat; | |
import org.dom4j.io.XMLWriter; | |
import org.jsoup.Jsoup; | |
import com.alibaba.fastjson.JSONObject; | |
public class MakePomFromJars { | |
public static void main(String[] args) throws FileNotFoundException, IOException { | |
List<String> notFundJars = new ArrayList<String>(); | |
Element dependencys = new DOMElement("dependencies"); | |
File dir = new File("D:/project/java/CSJ-Buttonz/WebContent/WEB-INF/lib"); | |
System.out.println("-----------jars包转换maven pom.xml----------"); | |
System.out.println("正在扫描libs:"); | |
for (File jar : dir.listFiles()) { | |
JarInputStream jis = new JarInputStream(new FileInputStream(jar)); | |
Manifest mainmanifest = jis.getManifest(); | |
jis.close(); | |
if (mainmanifest == null) { | |
System.err.println(jar.getName()); | |
continue; | |
} | |
String bundleName = mainmanifest.getMainAttributes().getValue("Bundle-Name"); | |
String bundleVersion = mainmanifest.getMainAttributes().getValue("Bundle-Version"); | |
Element ele = null; | |
System.out.println(jar.getName()); | |
StringBuffer sb = new StringBuffer(jar.getName()); | |
if (bundleName != null) { | |
bundleName = bundleName.toLowerCase().replace(" ", "-"); | |
sb.append(bundleName+"\t").append(bundleVersion); | |
ele = getDependices(bundleName, bundleVersion); | |
System.out.println(sb.toString()); | |
System.out.println(ele.asXML()); | |
} | |
if (ele == null || ele.elements().size() == 0) { | |
bundleName = ""; | |
bundleVersion = ""; | |
String[] ns = jar.getName().replace(".jar", "").split("-"); | |
for (String s : ns) { | |
if (Character.isDigit(s.charAt(0))) { | |
bundleVersion += s + "-"; | |
} else { | |
bundleName += s + "-"; | |
} | |
} | |
if (bundleVersion.endsWith("-")) { | |
bundleVersion = bundleVersion.substring(0, bundleVersion.length() - 1); | |
} | |
if (bundleName.endsWith("-")) { | |
bundleName = bundleName.substring(0, bundleName.length() - 1); | |
} | |
ele = getDependices(bundleName, bundleVersion); | |
sb.setLength(0); | |
sb.append(bundleName+"\t").append(bundleVersion); | |
System.out.println(sb.toString()); | |
System.out.println(ele.asXML()); | |
} | |
ele = getDependices(bundleName, bundleVersion); | |
if (ele.elements().size() == 0) { | |
notFundJars.add(jar.getName()); | |
} | |
dependencys.add(ele); | |
System.out.println(); | |
} | |
System.out.println(dependencys.asXML()); | |
System.out.println("扫描结束!"); | |
System.out.println("---------------------------------------"); | |
System.out.println("正在生成xml...."); | |
Document doc = DocumentHelper.createDocument(); | |
doc.addComment("生成于:"+new Date().getTime()+"by lirawx."); | |
doc.add(dependencys); | |
//用于格式化xml内容和设置头部标签 | |
OutputFormat format = OutputFormat.createPrettyPrint(); | |
//设置xml文档的编码为utf-8 | |
format.setEncoding("utf-8"); | |
Writer out; | |
try { | |
//创建一个输出流对象 | |
out = new FileWriter(dir+"/pom.xml"); | |
//创建一个dom4j创建xml的对象 | |
XMLWriter writer = new XMLWriter(out, format); | |
//调用write方法将doc文档写到指定路径 | |
writer.write(doc); | |
writer.close(); | |
System.out.print("生成XML文件成功"); | |
System.out.println("文件位于:"+dir+"/pom.xml"); | |
System.out.println("---------------------------------------"); | |
System.out.println("以下查找失败,请手动添加:"); | |
for (String jarError : notFundJars) { | |
System.out.println(jarError); | |
} | |
System.out.println("---------------------------------------"); | |
System.out.println("Bye!"); | |
} catch (IOException e) { | |
System.out.print("生成XML文件失败"); | |
e.printStackTrace(); | |
} | |
} | |
public static Element getDependices(String key, String ver) { | |
Element dependency = new DOMElement("dependency"); | |
// 设置代理 | |
// System.setProperty("http.proxyHost", "127.0.0.1"); | |
// System.setProperty("http.proxyPort", "8090"); | |
try { | |
String url = "http://search.maven.org/solrsearch/select?q=a%3A%22" + key + "%22%20AND%20v%3A%22" + ver + "%22&rows=3&wt=json"; | |
org.jsoup.nodes.Document doc = Jsoup.connect(url).ignoreContentType(true).timeout(30000).get(); | |
String elem = doc.body().text(); | |
JSONObject response = JSONObject.parseObject(elem).getJSONObject("response"); | |
if (response.containsKey("docs") && response.getJSONArray("docs").size() > 0) { | |
JSONObject docJson = response.getJSONArray("docs").getJSONObject(0); | |
Element groupId = new DOMElement("groupId"); | |
Element artifactId = new DOMElement("artifactId"); | |
Element version = new DOMElement("version"); | |
groupId.addText(docJson.getString("g")); | |
artifactId.addText(docJson.getString("a")); | |
version.addText(docJson.getString("v")); | |
dependency.add(groupId); | |
dependency.add(artifactId); | |
dependency.add(version); | |
} | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
return dependency; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment