Как я могу использовать локальный каталог в качестве целевой платформы для сборки Tycho?

Я хочу создать RCP-приложение с целевой платформой, которая является каталогом с Maven/Tycho.
Теперь у меня есть некоторые проблемы, которые не могут быть разрешены.

Internal error: java.lang.RuntimeException: "No solution found because the  
problem is unsatisfiable.": ["Unable to satisfy dependency from  
de.test.prototype.main 1.0.0.qualifier to bundle org.eclipse.ui 0.0.0.",  
"Unable to satisfy dependency from de.test.prototype.main 1.0.0.qualifier  
to bundle org.eclipse.core.runtime 0.0.0.", ...

В целом есть несколько проблем с разрешением зависимостей, поэтому я думаю, что Tycho не может использовать мою целевую платформу.
Я прочитал http://wiki.eclipse.org/Tycho/Target_Platform и будет следующее примечание:

Типы местоположений "Каталог", "Установка" и "Особенности" не поддерживаются. "

Итак, мой вопрос: как заставить Tycho использовать мою целевую платформу, хотя это каталог?

Ответ 1

Tycho требует метаданных p2 для разрешения зависимостей в вашей сборке. Вот почему папка с только пучками и функциями не может быть использована.

Однако вы можете конвертировать вашу папку в репозиторий p2, используя Возможности и приложение для издателей Bundles. После того, как вы это сделаете, вы можете ссылаться на папку как место "Software Site" с помощью URL file: в файле целевого определения. Тогда Tycho также сможет использовать его.

Обратите внимание, однако, что вы должны сначала спросить себя, действительно ли вам нужно это сделать: действительно ли функции и пакеты в вашей папке недоступны в каком-либо репозитории p2? Если это так, настоятельно рекомендуется не запускать на них издатели "Особенности и связки" (или вы можете нарушать основные допущения p2, что может привести к проблемам, которые обычно видны только вашим пользователям). Вместо этого вы должны ссылаться на эти функции и пакеты непосредственно из репозитория p2, например. через место "Software Site" в вашем целевом файле.

Ответ 2

Создайте репо из своих плагинов и загрузите его на сервер http (например, apache) и укажите ваш tycho pom на репо

Этот пример предназначен для mac и eclipse 4, но с некоторой настройкой вы можете заставить его работать на других платформах.

сначала создайте папку src на рабочем столе. В этой папке создайте 2 папки: функции плагинов

Теперь скопируйте свои плагины в папку плагинов и функции в папке с функциями.

Затем создайте пустую папку назначения (загрузите эту папку на свой сервер)

для этого примера я создал обе папки на рабочем столе, чтобы упростить ее

Затем я делаю это:

destination folder : /Users/yves/Desktop/repo
source folder : /Users/yves/Desktop/src

Terminal app : cd /Applications/Eclipse4

./eclipse  -debug -consolelog -nosplash -verbose -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/Users/yves/Desktop/repo -artifactRepository file:/Users/yves/Desktop/repo -source /Users/yves/Desktop/src -compress -append -publishArtifacts

Теперь папка repo содержит репо вашей целевой платформы. Загрузите его, настройте pom и постройте.

Ответ 3

Согласно моему опыту, Tycho поддерживает только онлайн p2 репозитории. Он отказывается работать с репо p2, расположенным на локальном диске. Странно, но верно.