Как ссылаться на мокито в Тихо?

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

Моя цель-платформа

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

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

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

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

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

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

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

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

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

1 ответ

Решение

Если 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 с тех пор был с открытым исходным кодом:

Другие вопросы по тегам