Как использовать каталог, содержащий сторонние пакеты в сборке Tycho

В прошлом у нас были наши пакеты и функции в файловой системе и они были доступны в Eclipse через файл целевого определения с расположением "Directory". Таким образом, их легко использовать с мастерами Export в Eclipse.

Теперь я пытаюсь создать eclipse-plugin с Tycho, у которого есть зависимости от сторонних разработчиков, например. javax.vecmath и org.apache.commons.math.

Из того, что я знаю, лучший способ получить зависимости в построении Tycho - через репозиторий p2. Поэтому я использую один для пакетов Eclipse. Но для моих сторонних пакетов, похоже, нет репозитория p2.

Итак, мой вопрос: как мне легко получить JAR (vecmath, commons-math) в репозиторий p2?

Я думал, что смогу создать репозиторий p2 с помощью Tycho, но как это сделать, когда я не могу получить доступ к сторонним пакетам в Tycho? Я попытался использовать целевое определение, но Tycho поддерживает только ссылки на репозитории p2, а не каталоги или установки. Существуют ли другие способы использования зависимостей сторонних разработчиков в сборке Maven/Tycho?

Ответ 1

Согласно вашему вопросу, зависимые от третьей стороны уже являются пакетами. Это хорошо. все, что осталось сделать, это создать метаданные p2 для пакетов.

Это можно легко сделать с помощью функций и приложений для издателей Bundles. Результатом является репозиторий p2. Очевидно, что вы не хотите, чтобы все ваши разработчики должны были делать это локально, чтобы запустить сборку Tycho, поэтому вы должны поместить результат приложения издателя на веб-сервер. Затем свяжите пакеты через URL-адрес http в целевом файле вашего проекта.

Ответ 2

Несколько различных параметров...

Плагин P2

Используйте p2-maven-plugin, чтобы обернуть все ваши зависимости, отличные от OSGi, в пакеты и создать репозиторий p2.

Я не пробовал p2-maven-plugin (его не было, когда я настраивал свой текущий проект). Его реализация основана на tycho, но вы можете обнаружить, что он обеспечивает более удобный способ решения вашей проблемы, чем только сами плагины tycho.

Плагин Bundle

Используйте maven-bundle-plugin для обертывания зависимостей, отличных от OSGi (один экземпляр-оболочка для каждой зависимости), и установите его в свой репозиторий. Я думаю, что commons-math уже является зависимостью, поэтому вам просто нужно обернуть vecmath. Затем вы можете перечислить эти зависимости в <dependencies> ваших файлов pom на основе tycho.

Этот подход имеет то преимущество, что вам не нужно настраивать репозиторий p2 только для создания вашего проекта. Недостатком является то, что управление зависимостями в ваших проектах пакетов больше не является случаем просто модификации файла MANIFEST.MF: вам также может понадобиться обновить pom.

Плагин Bundle и Tycho

Если вы используете подход плагинов Bundle для переноса ваших зависимостей в пакеты OSGi, все равно может быть полезно настроить репозиторий p2 для этих зависимостей в любом случае, так как это упрощает настройку целевой платформы в Eclipse PDE.

Чтобы сделать это, вы можете создать новый проект на основе tycho для сбора зависимостей в репозитории p2: то есть зависимостях, которые уже существуют, вместе с обернутыми версиями зависимостей, отличных от OSGi. Таким образом, проект, создающий репозиторий p2, отображает обернутые зависимости в его pom, и ваши проекты пакетов могут потреблять репозиторий p2 без перечисления каких-либо зависимостей в их poms.

Это подход, который я использую. В частности, я использую проект eclipse-feature для определения базовой функции, которая включает в себя все сторонние зависимости. У меня также есть параметр конфигурации <deployableFeature> в плагине упаковки, установленный на true, который создаст репозиторий p2 в целевом каталоге. Эта функция может быть установлена ​​в мой обычный экземпляр Eclipse, что упрощает использование текущей платформы Eclipse в качестве целевой платформы. Его также можно использовать в качестве репозитория p2, который можно использовать в другом месте сборки tycho (например, моим кодом) или в качестве репозитория в файле Eclipse .target.

eclipse-feature казался лучшим типом упаковки в Tycho 0.13.0. В более поздних версиях может быть более подходящий тип упаковки.

Ответ 3

Хорошее место для поиска пакетов сторонних пакетов в p2-репозиториях - орбита затмения

http://download.eclipse.org/tools/orbit/downloads/

Здесь находится

commons.math.

Если ваш сторонний пакет OSGi недоступен в репозитории p2, но в репозитории maven, например

http://search.maven.org/

вы можете использовать tycho pomDependency = рассмотреть переключатель:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts