Как ссылаться на мокито в Тихо?
В настоящее время я пытаюсь выполнить сборку (~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-сайтов в мою целевую платформу:
- Nexus Pro
Профессиональная версия Nexus поддерживает репозитории p2-Proxy, которые могут обернуть стандартные репозитории maven, такие как Maven Central Repository, в сайт обновлений p2, но профессиональная версия стоит около 800 долларов в год. - Создать затмение-хранилище
Вы можете создать новый проект 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 с тех пор был с открытым исходным кодом: