Как ссылаться на мокито в Тихо? - PullRequest
7 голосов
/ 04 сентября 2011

В настоящее время я пытаюсь выполнить сборку (~ 30 пакетов) с помощью Tycho.
Я столкнулся с некоторыми непонятными проблемами при использовании Mockito в моих модульных тестах.
Я создал eclipse-test-plugin как фрагмент проекта для тестируемого комплекта.Так как Tycho должен разрешать требуемые пакеты с помощью манифеста, я удалил зависимость от mockito из pom.xml.
Когда я затем попытался добавить mockito к необходимым пакетам в манифесте, mockito не указан в списке.Я нашел этот пост и создал целевую платформу, указывающую на индиго затмения.
Я включил специфику платформы, поэтому мне не нужен пакет дельта-затмений.Затем происходит первая странная вещь.Eclipse говорит мне, что существуют некоторые неудовлетворительные зависимости, и когда я устанавливаю новую созданную целевую платформу как активную в eclipse, больше пакетов, таких как org.osgi.framework и т. Д., Не может быть разрешено eclipse.Но когда я собираю eclipse-product, используя Tycho и целевую платформу, он работает.

My target-platform

Если я установлю текущую установку затмения в качестве активной платформы, расслоения будут разрешены.Я выбрал следующее из выпуска indigo:

  • Ресурсы разработчика подключаемых модулей Eclipse RCP
  • Целевые компоненты Equinox
  • Целевые компоненты Jetty

Итак, мой первый вопрос «Что не так с моей целевой платформой, так что Tycho может использовать ее, но затмение - нет?»

Чтобы приблизиться к моейИсходная проблема (запуск mockito) Я установил текущую установку Eclipse в качестве активной целевой платформы.Затем Eclipse может разрешить пакет org.osgi.framework и другие.
Затем я добавил ранее удаленную зависимость к mockito снова к моему pom.xml, как в вышеупомянутом посте.Но я все еще не могу найти mockito, когда пытаюсь добавить его в требуемые пакеты в манифесте.

Итак, мой второй вопрос «Что я делаю не так? Как вы ссылаетесь на пакеты, которые не опубликованы на сайте обновлений eclipse, например, на центральный репозиторий maven?»

Обновление: Во время моего исследования я нашел два способа включения комплектов с non-p2-update-sites в мою целевую платформу:

  1. Nexus Pro
    Профессиональная версия Nexus поддерживает репозитории p2-Proxy, которые могут обернуть стандартные репозитории maven, такие как Maven Central Repository, в сайт обновлений p2, но профессиональная версия стоит около 800 долларов за штуку.год.
  2. Создание затмения-репозитория
    Вы можете создать новый проект maven с упаковкой eclipse-repository , включающей все необходимыерасслоения.Затем созданный артефакт развертывается на общем веб-сервере.

На вашей целевой платформе вы можете затем ссылаться на Nexus p2-proxy repo или p2-repo, размещенный в Интернете.
Кто-нибудь знает другие способы - возможно, более удобный / менее дорогой?

Пожалуйста, помогите мне немного лучше понять запутанный мир Тихо ...
Заранее спасибо

1 Ответ

3 голосов
/ 20 октября 2011

Если mockito не находится на вашей целевой платформе (а у вас его нет в репозитории p2), проще всего сделать это, вероятно, повторно добавить зависимость обратно в pom (не удаляя импорт mockito из ваш манифест).

Я думаю, вам также нужно указать следующее в pom, в конфигурации для плагина target-platform-configuration:

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
      <pomDependencies>consider</pomDependencies>
    </configuration>
  </plugin>

См. Инструкции по добавлению зависимости от артефакта pom-first . (Я не уверен, нужно ли вам указывать преобразователь).

Что касается поддержки репозиториев p2 в Nexus, я понимаю, что плагин p2 для Nexus с тех пор был с открытым исходным кодом:

...