1

我的理解是,<ivy:resolve/>将配置的 repo 中的依赖项复制到本地 Ivy 缓存(根目录下${USER_HOME}/.ivy2)。但是看了任务的文档后,惊讶的发现没有resolver属性,比如:

<ivy:resolve file="ivy.xml" conf="compile" resolver="theResolverToUse"/>

所以我问:你如何指定使用哪个解析器,特别是如果(在ivysettings.xml),你可以定义 1+ 解析器?提前致谢。

更新

例如,这是我的 (emerging) 中定义的解析器片段ivysettings.xml

<resolvers>  
    <chain name="chainResolver" returnFirst="true">
        <url name="urlResolver">
            <ivy pattern="${ivyRepoRoot}/module_descriptors/${ivyModDescriptorPattern}"/>
            <artifact pattern="${ivyRepoRoot}/artifacts/${ivyArtifactPattern}"/>
        </url>

        <filesystem name="localFileResolver">
            <artifact pattern="${user.home}/.ivy2/local-cache/[artifact]-[revision].[ext]"/>
        </filesystem>
    </chain>  
    <sftp name="publisherResolver" user="fizz" userPassword="buzz" host="example.com">
        <ivy pattern="sftp://example.com:22/usr/local/apache/htdocs/ivy/module_descriptors/${ivyModDescriptorPattern}"/>
        <artifact pattern="sftp://example.com:22/usr/local/apache/htdocs/ivy/artifacts/${ivyArtifactPattern}"/>
    </sftp>
</resolvers>
4

2 回答 2

2

在 Ivy 中,解析器及其关系、优先级和链是与解析任务分开定义的。

多个解析器可以链接在一起,在链式解析器中,请特别注意链中的第一个解析器和“先查找”的概念。

如果解析器和/或链配置正确,您不必选择使用哪个解析器。当解析器在不同的环境中具有不同的行为时,这非常方便。

于 2013-02-21T17:23:38.743 回答
0

链解析器很方便,但如果您想要更多控制,我建议使用模块部分,如以下答案中所述:

于 2013-02-21T20:04:01.163 回答