как настроить ivy для разрешения зависимостей htmlunit

Ivy может разрешать зависимости зависимостей, в документации говорится, что можно использовать конфигурации модулей, чтобы сообщить ivy, что конфигурация зависит от данной конфигурации зависимости.

Я хочу использовать htmlunit в проекте, на его странице sourceforge информации о зависимостях я нашел настройки зависимостей я перевел спецификации maven на ivy:

<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11"/>

Я написал тест, скомпилировал его, при попытке запустить у меня было ClassNotFoundException, я снова вернулся к sourceforge и искал информацию о зависимостях htmlunit, в этом page я нашел то, что искал, поэтому я подумал, что все, что мне нужно, это использовать магию конфигураций модулей, поэтому я добавил:

<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11" conf="test->compile; test->test"/>

но у меня есть эта ошибка, сообщающая мне, что конфигурация не найдена в net.sourceforge.htmlunit#htmlunit;2.11, 'compile'


person elaich    schedule 28.02.2013    source источник


Ответы (1)


Конфигурация компиляции существует....

При попытке воспроизвести вашу проблему я обнаружил следующее сообщение об ошибке:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: net.sourceforge.htmlunit#htmlunit;2.11: 
    configuration not public in net.sourceforge.htmlunit#htmlunit;2.11: 'test'......

Когда ivy переводит модуль Maven в конфигурации, он делает это таким образом, что не позволяет разрешать транзитивные тестовые зависимости.

В этом рассуждении есть некоторая логика, ведь все тестовые зависимости предназначены для поддержки тестирования модуля htmlunit. Ваш модуль должен явно объявлять свои собственные тестовые зависимости....

Обычно я предлагаю сопоставить вашу «тестовую» конфигурацию с удаленной областью Maven «время выполнения», чтобы получить дополнительные банки:

<dependency org="net.sourceforge.htmlunit" 
            name="htmlunit" 
            rev="2.11" 
            conf="compile->default;test->runtime"/>

Проблема в том, что в модуле htmlunit нет зависимостей «во время выполнения», а это означает, что это не поможет.

В заключение вы не указали, какой класс отсутствует. Если это что-то очевидное, например junit, то я бы посоветовал это явно объявить в вашем файле ivy.

person Mark O'Connor    schedule 28.02.2013