Ivy custom url resolver - PullRequest
       32

Ivy custom url resolver

3 голосов
/ 30 августа 2010

Я пытаюсь создать собственный распознаватель в моем файле 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 . Если я укажу мои зависимости правильно , тогда ivy попытается найти их в 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>

В: Как изменить шаблон артефакта / что-то еще, чтобы заставить плюща заставить его работать правильно?

1 : http://scala -tools.org / repo-release / scala-tools repo

1 Ответ

6 голосов
/ 31 августа 2010

ivy.xml

Я проверил POM на наличие scala-компилятора и обнаружил, что он ссылается на библиотеку scala-модуля.Это означает, что в файле 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

Я рекомендую использовать преобразователь ibiblio при загрузке из любого совместимого с Maven репозитория.

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