标题说明了一切。
给定一个装满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和版本,这是不可能的。