简短:给定(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)?
答案 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):
在这种情况下,您仍然需要手动为JAR创建URL(或者为其搜索搜索结果),但其他存储库(如Nexus)会直接在API结果中提供此内容。
答案 2 :(得分:0)
如果有一个 maven 的 uri 方案就好了。一个 maven uri 只是 mvn:group:artifact[:packaging]:version 。或者,您可以将其嫁接到骨灰盒方案中。