对pom.xml进行逆向工程,给定一个装满jar的lib文件夹



标题说明了一切。

给定一个装满jar的lib文件夹,是否可以对pom.xml依赖项进行逆向工程?

即,在给定jar名称和/或SHA1校验和的情况下发现公开可用的Maven工件。

这里有一个天真的尝试,但效果不太好,因为搜索经常返回太多匹配:

#!/usr/bin/python
# Mavenize a lib folder, converting jars into dependencies
import os
import sys
import urllib2
import json
for file in os.listdir(sys.argv[1]):
        url = "http://search.maven.org/solrsearch/select?rows=1&wt=json&q=" + file
        response = urllib2.urlopen(url)
        jsonStr = response.read()
        jsonObj = json.loads(jsonStr)
        if(jsonObj["response"]["numFound"] > 0):
                print "<dependency><!-- for " + file + "-->"
                print "  <groupId>" + jsonObj["response"]["docs"][0]["g"] + "</groupId>"
                print "  <artifactId>" + jsonObj["response"]["docs"][0]["a"] + "</artifactId>"
                print "  <version>" + jsonObj["response"]["docs"][0]["latestVersion"] + "</version>"
                print "</dependency>"

如果那些jar文件是由maven生成的,那么是的,这是可能的。在其他情况下,如果没有额外的步骤,比如尝试从mvnrepository等中查找组id和版本,这是不可能的。

最新更新