如何在常春藤中使用[ext]变量?

时间:2012-09-03 14:38:39

标签: ant ivy

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

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

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

文件以.jar扩展名保存。

1 个答案:

答案 0 :(得分:5)

值得深入研究以下常春藤文档:

第一个问题是您的网址解析程序未配置为读取远程模块的常春藤文件(忽略常春藤最佳实践中的第一个建议,即在每个模块中使用常春藤文件)。没有模块元数据,常春藤会假设您正在尝试下载JAR文件。

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

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

将使用您当前的设置转换为以下网址:

http://yourorg/module1-9.1.jar

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

我怀疑你真的不想建立一个文件存储库,只是想说服常春藤下载和缓存文件?在这种情况下,我建议您阅读以下答案:extra attributes使用dependency artifacts做类似的事情:

实施例

的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>
    ..

注意:

  • 每个依赖项都声明每个工件的类型,以及附加的“hostname”属性。
  • 如果远程模块有ivy.xml,则publications部分会存储此工件信息。
  • 额外的工件展示了常春藤在启用任何类型的自定义属性元数据方面的强大功能。

ivysettings.xml

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

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