2013-03-07 35 views
0

它可以从通过如何按组,工件和版本计算POM文件的URL?

http://search.maven.org/remotecontent?filepath

为Apache下议院守护包例如POM的文件由三个属性标识的URL下载一个POM文件

  • 神器:commons-daemon
  • 组:commons-daemon
  • 版本:1.0.13

所得网址为:

http://search.maven.org/remotecontent?filepath=commons-daemon/commons-daemon/1.0.13/commons-daemon-1.0.13.pom

此URL得到由中央存储库来计算,如果我使用interactive search三个属性进行搜索。使用REST API可以完成相同的搜索,该API返回XML document。这是XML响应的结果节点:

<result name="response" numFound="1" start="0"> 
    <doc> 
    <str name="a">commons-daemon</str> 
    <arr name="ec"> 
     <str>-javadoc.jar</str> 
     <str>-sources.jar</str> 
     <str>.jar</str> 
     <str>-bin-windows.zip</str> 
     <str>-native-src.tar.gz</str> 
     <str>-src.zip</str> 
     <str>-src.tar.gz</str> 
     <str>-native-src.zip</str> 
     <str>.pom</str> 
     <str>-bin.tar.gz</str> 
     <str>-bin.zip</str> 
    </arr> 
    <str name="g">commons-daemon</str> 
    <str name="id">commons-daemon:commons-daemon:1.0.13</str> 
    <str name="p">jar</str> 
    <arr name="tags"> 
     <str>software</str> 
     <str>commons</str> 
     <str>invocation</str> 
     <str>provides</str> 
     <str>alternative</str> 
     <str>mechanism</str> 
     <str>apache</str> 
     <str>daemon</str> 
     <str>java</str> 
     <str>code</str> 
     <str>like</str> 
     <str>unix</str> 
    </arr> 
    <long name="timestamp">1360214551000</long> 
    <str name="v">1.0.13</str> 
    </doc> 
</result> 

结果列出所有可用文件,但仅列出后缀。这些网址丢失了,我不知道如何计算它们。

什么是计算完整文件路径的正确规则?

据我所见,该目录似乎是通过追加组,工件和版本以及用斜杠替换任何点来创建的。版本号也是文件名的最后部分。但如何计算文件名的开头?它总是神器吗?

回答

2

查看@Brett Porter编写的Repository Layout规范。

引用:

对于主构件:

/$groupId[0]/../$groupId[n]/$artifactId/$version/$artifactId-$version.$extension

对于次级伪影:

/$groupId[0]/../$groupId[n]/$artifactId/$version/$artifactId-$version-$classifier.$extension

他自参考它在this SO回答。

+0

谢谢。在我看来,我可以忽略POM文件的辅助工件的规则,因为只有主工件具有POM文件。 – ceving 2013-03-07 15:32:50