如何按组,工件和版本计算POM文件的URL?

时间:2013-03-07 14:56:03

标签: maven repository

可以通过URL

下载POM文件
  

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

例如,Apache Commons Daemon软件包的POM文件由三个属性

标识
  • artifact:commons-daemon
  • group:commons-daemon
  • 版本:1.0.13

生成的网址为:

  

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

如果我使用interactive search搜索三个属性,则此URL由中央存储库计算。可以使用REST API完成相同的搜索,REST 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>

结果列出所有可用文件,但仅列出后缀。网址丢失了,对我来说如何计算它们并不明显。

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

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

1 个答案:

答案 0 :(得分: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回答中自我引用。