以编程方式解析Maven工件URL

时间:2013-08-22 19:16:31

标签: java maven

简短:给定(groupId,artifactId,版本,存储库URL)我可以通过编程方式让Maven解析工件URL吗?

长:给定(groupId,artifactId,版本,存储库URL),可以下载Maven工件。通常,工件的URL如下所示:

方案:// {库} / {的groupId} / {的artifactId} / {版本} / {的artifactId} - {版本}的.jar

对于(org.apache.maven,maven-core,3.0.0,http://repo.maven.org/maven2),工件URL解析为:

http://repo.maven.org/maven2/org/apache/maven/maven-core/3.0.0/maven-core-3.0.0.jar

使用上面推断的模式,我可以使用字符串连接来为任何给定的(groupId,artifactId,版本,存储库URL)生成工件URL。但是,我不想依赖这个推断的模式,因为它可能会在Maven的未来版本中发生变化。

我是否可以通过编程方式让Maven解析我给出的工件URL(groupId,artifactId,version,repository URL)?

3 个答案:

答案 0 :(得分:1)

ivy之类的东西会更容易以您建议的方式嵌入。 Ivy可以使用与maven相同的布局,也可以使用自定义布局。

答案 1 :(得分:1)

许多Maven存储库都有一个可用于搜索工件的API。例如,中央Maven存储库有一个,文档为here

对于您的示例,中央存储库的API提供以下URL以直接链接到搜索:

http://search.maven.org/#search|ga|1|g:"org.apache.maven" AND a:"maven-core" AND v:"3.0"

以下用于返回XML数据的URL(或通过更改最后一个参数的JSON):

http://search.maven.org/solrsearch/select?q=g:"org.apache.maven" AND a:"maven-core" AND v:"3.0"&wt=xml

在这种情况下,您仍然需要手动为JAR创建URL(或者为其搜索搜索结果),但其他存储库(如Nexus)会直接在API结果中提供此内容。

答案 2 :(得分:0)

如果有一个 maven 的 uri 方案就好了。一个 maven uri 只是 mvn:group:artifact[:packaging]:version 。或者,您可以将其嫁接到骨灰盒方案中。