【问题标题】:Ivy custom url resolver常春藤自定义网址解析器
【发布时间】:2011-04-05 16:28:55
【问题描述】:

我正在尝试在我的 ivysettings.xml 文件中创建自定义解析器:

<ivysettings>
    <settings defaultResolver="default"/>
    <resolvers>
        <chain name="default">
            <url name="scala-tools">
                <ivy pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/ivy-[revision].xml" />
                <artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
                <artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact].[ext]"/>
            </url>
            <!--<ibiblio name="ibiblio"/>-->
        </chain>
    </resolvers>
</ivysettings>

如您所见,我只有一个 UrlResolver,它将尝试在 scala-tools repo 中查找我的依赖项。如果我指定我的依赖项correctly,那么常春藤将尝试在http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library-2.8.0.jar 和http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library.jar 中找到它(是的,根据我在ivysettings.xml 中的说明)显然,它什么也找不到。为了让事情正常工作,我必须以这种方式指定依赖项:

<ivy-module version="2.2">
    <info organisation="org.yoba" module="Yoba"/>
    <dependencies>
        <dependency org="org/scala-lang" name="scala-library" rev="2.8.0"/>
        <!--<dependency org="org.scala-lang" name="scala-library" rev="2.8.0"/>-->
        <dependency org="org/scala-lang" name="scala-compiler" rev="2.8.0"/>
        <!--<dependency org="org.scala-lang" name="scala-compiler" rev="2.8.0"/>-->
    </dependencies>
</ivy-module>

问:如何更改工件模式/其他东西以迫使 ivy 使其正常工作?

1:http://scala-tools.org/repo-releases/scala-tools 回购

【问题讨论】:

    标签: ant build-process dependencies ivy dependency-management


    【解决方案1】:

    ivy.xml

    我检查了 POM 的 scala-compiler 并发现它引用了模块 scala-library。这意味着在 ivy 文件中只需要一个依赖声明:

    <ivy-module version="2.0">
        <info organisation="org.yoba" module="Yoba"/>
        <dependencies>
            <dependency org="org.scala-lang" name="scala-compiler" rev="2.8.0" conf="default"/>
        </dependencies>
    </ivy-module>
    
    • 版本号需要为“2.0”
    • 包含默认映射以避免下载可选依赖项

    ivysettings.xml

    我建议在从任何 Maven 兼容存储库下载时使用 ibiblio 解析器。

    <ivysettings>
        <settings defaultResolver="scalatools"/>
        <resolvers>
            <ibiblio name="scalatools" root="http://scala-tools.org/repo-releases" m2compatible="true"/>
        </resolvers>
    </ivysettings>
    

    如果您需要下载其他库,可以增强设置文件,以便 ivy 仅从 scala 存储库中检索 scala 模块

    <ivysettings>
        <settings defaultResolver="central"/>
        <resolvers>
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="scalatools" root="http://scala-tools.org/repo-releases" m2compatible="true"/>
        </resolvers>
        <modules>
            <module organisation="org.scala-lang" resolver="scalatools"/>
        </modules>
    </ivysettings>
    

    【讨论】:

    • 谢谢,关于我的问题的答案可以在 ibiblio 解析器描述中找到:“使用 m2compatible 属性,您可以从 maven 2 存储库兼容性中受益(在斜杠中转换组织中的点,搜索 poms,使用传递pom 的依赖项)"
    猜你喜欢
    • 2018-04-04
    • 2013-07-13
    • 2013-08-17
    • 2011-08-19
    • 2013-05-31
    • 2011-03-18
    • 2015-07-20
    • 2013-12-19
    相关资源
    最近更新 更多