В настоящее время я пытаюсь выполнить сборку (~ 30 пакетов) с помощью Tycho.
Я столкнулся с некоторыми непонятными проблемами при использовании Mockito в моих модульных тестах.
Я создал eclipse-test-plugin
как фрагмент проекта для тестируемого комплекта.Так как Tycho должен разрешать требуемые пакеты с помощью манифеста, я удалил зависимость от mockito из pom.xml
.
Когда я затем попытался добавить mockito к необходимым пакетам в манифесте, mockito не указан в списке.Я нашел этот пост и создал целевую платформу, указывающую на индиго затмения.
Я включил специфику платформы, поэтому мне не нужен пакет дельта-затмений.Затем происходит первая странная вещь.Eclipse говорит мне, что существуют некоторые неудовлетворительные зависимости, и когда я устанавливаю новую созданную целевую платформу как активную в eclipse, больше пакетов, таких как org.osgi.framework
и т. Д., Не может быть разрешено eclipse.Но когда я собираю eclipse-product
, используя Tycho и целевую платформу, он работает.
![My target-platform](https://i.stack.imgur.com/P7wwg.png)
Если я установлю текущую установку затмения в качестве активной платформы, расслоения будут разрешены.Я выбрал следующее из выпуска indigo:
- Ресурсы разработчика подключаемых модулей Eclipse RCP
- Целевые компоненты Equinox
- Целевые компоненты Jetty
Итак, мой первый вопрос «Что не так с моей целевой платформой, так что Tycho может использовать ее, но затмение - нет?»
Чтобы приблизиться к моейИсходная проблема (запуск mockito) Я установил текущую установку Eclipse в качестве активной целевой платформы.Затем Eclipse может разрешить пакет org.osgi.framework
и другие.
Затем я добавил ранее удаленную зависимость к mockito снова к моему pom.xml
, как в вышеупомянутом посте.Но я все еще не могу найти mockito, когда пытаюсь добавить его в требуемые пакеты в манифесте.
Итак, мой второй вопрос «Что я делаю не так? Как вы ссылаетесь на пакеты, которые не опубликованы на сайте обновлений eclipse, например, на центральный репозиторий maven?»
Обновление: Во время моего исследования я нашел два способа включения комплектов с non-p2-update-sites в мою целевую платформу:
- Nexus Pro
Профессиональная версия Nexus поддерживает репозитории p2-Proxy, которые могут обернуть стандартные репозитории maven, такие как Maven Central Repository, в сайт обновлений p2, но профессиональная версия стоит около 800 долларов за штуку.год. - Создание затмения-репозитория
Вы можете создать новый проект maven с упаковкой eclipse-repository
, включающей все необходимыерасслоения.Затем созданный артефакт развертывается на общем веб-сервере.
На вашей целевой платформе вы можете затем ссылаться на Nexus p2-proxy repo или p2-repo, размещенный в Интернете.
Кто-нибудь знает другие способы - возможно, более удобный / менее дорогой?
Пожалуйста, помогите мне немного лучше понять запутанный мир Тихо ...
Заранее спасибо