我正在将.jar
其全局lib/
目录中包含71个文件的构建转换为使用Maven.当然,在这个项目的历史过去十年中,许多开发人员已经从Web上撤下了这些内容,并且并不总是将所有必需的版本信息等添加到VCS中.
是否有一种简单,自动的方式从该组.jar
文件转到<dependency/>
我的pom.xml
文件中使用的相应元素?我希望有一个网页,我可以提交jar文件的校验和,并获取XML片段.谷歌搜索'maven存储库搜索'基本上只是找到基于名称的搜索.而http://repo1.maven.org/已经没有任何搜索,据我所看到的.
更新:GrepCode看起来可以找到给定MD5校验和的项目.但它没有提供Maven需要的特定细节(groupId
,artifactId
).
这是我根据接受的答案提出的脚本:
#!/bin/bash
for f in *.jar; do
s=`md5sum $f | cut -d ' ' -f 1`;
p=`wget -q -O - "http://www.jarvana.com/jarvana/search?search_type=content&content=${s}&filterContent=digest" | grep inspect-pom | cut -d \" -f 4`;
pj="http://www.jarvana.com${p}";
rm -f tmp;
wget -q -O tmp "$pj";
g=`grep groupId tmp | head -n 1 | cut -d \> -f 3 | cut -d \< -f 1`;
a=`grep artifactId tmp | head -n 1 | cut -d \> -f 3 | cut -d \< -f 1`;
v=`grep version tmp | head -n 1 | cut -d \> -f 3 | cut -d \< -f 1`;
rm -f tmp;
echo '<dependency> <!--' $f $s $pj '-->';
echo " <groupId>$g</groupId>";
echo " <artifactId>$a</artifactId>";
echo " <version>$v</version>";
echo "</dependency>";
echo;
done
Run Code Online (Sandbox Code Playgroud)
我的情况与OP相同,但正如后面的答案中提到的,Jarvana不再起来了。
我使用Maven Central Search的校验和搜索功能及其搜索 api来获得相同的结果。
首先使用 sha1sums 创建一个文件
sha1sum *.jar > jar-sha1sums.txt
Run Code Online (Sandbox Code Playgroud)
然后使用以下 python 脚本检查是否有有关相关 jar 的任何信息
import json
import urllib2
f = open('./jar-sha1sums.txt','r')
pom = open('./pom.xml','w')
for line in f.readlines():
sha = line.split(" ")[0]
jar = line.split(" ")[1]
print("Looking up "+jar)
searchurl = 'http://search.maven.org/solrsearch/select?q=1:%22'+sha+'%22&rows=20&wt=json'
page = urllib2.urlopen(searchurl)
data = json.loads("".join(page.readlines()))
if data["response"] and data["response"]["numFound"] == 1:
print("Found info for "+jar)
jarinfo = data["response"]["docs"][0]
pom.write('<dependency>\n')
pom.write('\t<groupId>'+jarinfo["g"]+'</groupId>\n')
pom.write('\t<artifactId>'+jarinfo["a"]+'</artifactId>\n')
pom.write('\t<version>'+jarinfo["v"]+'</version>\n')
pom.write('</dependency>\n')
else:
print "No info found for "+jar
pom.write('<!-- TODO Find information on this jar file--->\n')
pom.write('<dependency>\n')
pom.write('\t<groupId></groupId>\n')
pom.write('\t<artifactId>'+jar.replace(".jar\n","")+'</artifactId>\n')
pom.write('\t<version></version>\n')
pom.write('</dependency>\n')
pom.close()
f.close()
Run Code Online (Sandbox Code Playgroud)
青年MMV
Jarvana可以搜索摘要(选择内容输入字段旁边的摘要)。
例如,搜索d1dcb0fbee884bb855bb327b8190af36将返回commons-collections-3.1.jar.md5
. 然后只需单击
图标以获取详细信息(包括 Maven 坐标)。
人们可以想象将其自动化。