如何指定使用哪个常春藤解析器

时间:2013-02-21 17:10:42

标签: java ivy dependency-management

我的理解是<ivy:resolve/>将配置的repo中的依赖项复制到本地Ivy缓存中(以${USER_HOME}/.ivy2为根)。但在查看task's docs后,我惊讶地发现没有resolver属性,例如:

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

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

更新

例如,这是我(新兴)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>

2 个答案:

答案 0 :(得分:2)

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

多个旋转变压器可以链接在一起,在链式旋转变压器中,要特别注意链中的第一个旋转变压器和“先找到”的概念。

如果正确配置了旋转变压器和/或链,则不必选择要使用的旋转变压器。当解析器在不同环境中具有不同的行为时,这非常方便。

答案 1 :(得分:0)

Chain resolvers非常方便,但如果您想要更多控制权,我建议您使用modules部分,如以下答案中所述: