我想使用 url 解析器来下载依赖。依赖是 JS 或 XML 文件。所以,我用:
<url name="urlresolver"> <artifact pattern="http://[organisation]/[module]-[revision].[ext]" /> </url>
和
<ivy:retrieve pattern="${build}/[module]-[revision].[ext]"/>
该文件以 .jar 扩展名保存。
值得挖掘以下常春藤文档:
第一个问题是您的 url 解析器未配置为读取远程模块的 ivy 文件(忽略第一个建议,在 ivy 最佳实践中,对每个模块使用 ivy 文件)。如果没有模块元数据,常春藤将假定您正在尝试下载 JAR 文件。
第二个问题是您似乎没有使用 ivy 存储库来存储文件。以下依赖声明:
<dependency org="yourorg" name="module1" rev="9.1"/>
将使用您当前的设置翻译成以下 URL:
http://yourorg/module1-9.1.jar
“org”字段旨在指定发布模块的组织单位,而不是服务器主机名。
我怀疑您对构建文件存储库并不真正感兴趣,只是想说服 ivy 下载和缓存文件?在这种情况下,我建议阅读以下答案,该答案在依赖项工件上使用额外的属性来做类似的事情:
<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>
..
笔记:
..
<url name="urlresolver">
<artifact pattern="http://[hostname]/files/[organisation]/[module]-[revision].[ext]" />
</url>
..
演示解析器如何使用标准属性和自定义“主机名”。