Плагин Eclipse Ivy говорит, что у jruby неразрешенная зависимость, но у jruby 1.6.6 нет - PullRequest
0 голосов
/ 21 февраля 2012

Я получаю эту ошибку при попытке добавить jruby в качестве зависимости с помощью плагина ivy Eclipse:

Impossible to resolve dependencies of com.restphone#;working@James-Moores-iMac.local
unresolved dependency: org.jruby.extras#bytelist;1.0.8: not found

Это в моем ivy.xml:

 <dependency org="org.jruby" 
  name="jruby-complete" 
  rev="1.6.6" />

И это в ivysettings.xml:

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="codehaus" m2compatible="true" root="http://repository.codehaus.org/"/>
        </chain>
    </resolvers>
</ivysettings>

Но согласно списку рассылки jruby, jruby не имеет никаких зависимостей для времени выполнения, компиляции или тестовая область .

Нужно ли где-нибудь предоставлять плагину плюща больше информации?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

На мой взгляд, всегда полезно указывать сопоставление конфигурации для ваших зависимостей.

Следующий файл плюща работал у меня нормально. Как описано, была загружена только рубиновая банка.

<ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <configurations>
        <conf name="compile"/>
        <conf name="runtime" extends="compile"/>
        <conf name="test"    extends="runtime"/>
    </configurations>
    <dependencies>
         <dependency org="org.jruby" name="jruby-complete" rev="1.6.6" conf="compile->default"/>
    </dependencies>
</ivy-module>

Здесь я сопоставил мою локальную конфигурацию "compile" с удаленной конфигурацией по умолчанию. (В модуле Maven конфигурация ivy по умолчанию переводится в область «compile»).


Я копался в файле удаленного POM :

  <properties>
    <jar.scope>provided</jar.scope>
    ..
    ..

    <dependency>
      <groupId>org.jruby.joni</groupId>
      <artifactId>joni</artifactId>
      <scope>${jar.scope}</scope>
    </dependency>
    <dependency>
      <groupId>org.jruby.extras</groupId>
      <artifactId>jnr-netdb</artifactId>
      <scope>${jar.scope}</scope>
    </dependency>
    ...

Все дополнительные зависимости были объявлены в «предоставленной» области Maven.

Пара вопросов:

1) В Maven предоставленная область используется для jar-файлов, необходимых для компиляции этого модуля. Их не нужно упаковывать, потому что они являются частью целевой среды выполнения. Точно так же такие зависимости не нужны как транзитивные зависимости для вашего модуля и, следовательно, их не нужно загружать.

2) Все банки находятся в репозитории Maven Central. Следующий файл настроек извлечет все, если вы решите опустить отображение конфигурации ivy

<ivysettings>
    <property name="ivy.checksums" value=""/>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
        </chain>
    </resolvers>
</ivysettings>

3) Следующая ошибка вызвана контрольной суммой мусора. Мой предоставленный файл настроек отключает эту проверку ... что-то, что вам не рекомендуется делать в удаленном хранилище

[ivy:resolve] :::: WARNINGS
[ivy:resolve]   problem while downloading module descriptor: http://repo1.maven.org/maven2/org/jruby/extras/bytelist/1.0.8/bytelist-1.0.8.pom: invalid sha1: expected=e40ee094403473e43f71e21cf9cbf71f08d2098b computed=a9627bc7e42f886e290985367040794adb676320 (977ms)
[ivy:resolve]       module not found: org.jruby.extras#bytelist;1.0.8
1 голос
/ 22 февраля 2012

Хотя документы JRuby могут не указывать требуемую зависимость, похоже, что используемый вами репозиторий делает ...

Вы запросили 'jruby-complete', и если вы пойдете и посмотритев этом POM вы увидите его спецификацию jruby extras.

Один из вариантов - выбрать другой POM-файл в качестве основы для вашей зависимости, но быстрое решение - добавить атрибут transitive = "false" в вашзависимость.

<dependency org="org.jruby" 
  name="jruby-complete" 
  transitive="false"
  rev="1.6.6" />
...