1

我想使用 url 解析器来下载依赖。依赖是 JS 或 XML 文件。所以,我用:

<url name="urlresolver">
  <artifact pattern="http://[organisation]/[module]-[revision].[ext]" />
</url>

<ivy:retrieve pattern="${build}/[module]-[revision].[ext]"/>

该文件以 .jar 扩展名保存。

4

1 回答 1

5

值得挖掘以下常春藤文档:

第一个问题是您的 url 解析器未配置为读取远程模块的 ivy 文件(忽略第一个建议,在 ivy 最佳实践中,对每个模块使用 ivy 文件)。如果没有模块元数据,常春藤将假定您正在尝试下载 JAR 文件。

第二个问题是您似乎没有使用 ivy 存储库来存储文件。以下依赖声明:

<dependency org="yourorg" name="module1" rev="9.1"/>

将使用您当前的设置翻译成以下 URL:

http://yourorg/module1-9.1.jar

“org”字段旨在指定发布模块的组织单位,而不是服务器主机名。

我怀疑您对构建文件存储库并不真正感兴趣,只是想说服 ivy 下载和缓存文件?在这种情况下,我建议阅读以下答案,该答案在依赖项工件上使用额外的属性来做类似的事情:

例子

常春藤.xml

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
    ..
    ..
    <dependency org="yourorg" name="yourmodule1" rev="9.1">
       <artifact name="file1"  e:hostname="www.server1.com" type="xml"/>
       <artifact name="file2"  e:hostname="www.server1.com" type="xml"/>
    </dependency>

    <dependency org="yourorg" name="yourmodule2" rev="9.1">
       <artifact name="file3"  e:hostname="www.server2.com" type="xml"/>
       <artifact name="file4"  e:hostname="www.server2.com" type="xml"/>
    </dependency>
    ..

笔记:

  • 每个依赖项声明每个工件的类型,以及附加的“主机名”属性。
  • 如果远程模块有 ivy.xml,则发布部分将存储此工件信息。
  • 额外的工件展示了 ivy 在启用任何类型的自定义属性元数据方面的能力。

常春藤设置.xml

..
<url name="urlresolver">
      <artifact pattern="http://[hostname]/files/[organisation]/[module]-[revision].[ext]" />
</url>
..

演示解析器如何使用标准属性和自定义“主机名”。

于 2012-09-03T20:14:56.330 回答