У меня есть куча плагинов на основе Eclipse, которые я переношу в Maven/Tycho. Большинство из этих плагинов зависят от отдельных библиотек, которыми я теперь управляюсь через Maven, а не путаются с файлами .jar.
Самая громоздкая часть моей текущей установки связана с очевидной неспособностью Tycho обрабатывать артефакты Maven-only (то есть не OSGi). Моя текущая настройка работает следующим образом:
-
В
pom.xmlкаждого плагина Eclipse я выдаюunpackцельmaven-dependency-pluginво время фазыinitialize. Это распаковывает артефакты, которые я указываю в отдельный каталогtarget/dependencies. -
Каталог
target/dependenciesдобавляется как выходной каталог вbuild.properties, так что Tycho может добавить его в путь к классам при компиляции:source.. = src/main/java/ output.. = target/classes/ output.. = target/dependencies/ -
Каталог
target/dependenciesдобавляется в библиотекуBundle-ClassPathвMETA-INF/MANIFEST.MF.
Эти параметры позволяют директиве compile Maven компилировать плагин. Импорт проекта из VCS и вручную указание каталога target/dependencies в виде папки класса в Eclipse позволяет указанной среде IDE также скомпилировать плагин.
К сожалению, это довольно громоздкое решение по нескольким причинам:
-
Для настройки
maven-dependency-pluginнеобходимо указать все артефакты, которые необходимо распаковать. Можно использоватьunpack-dependenciesвместоunpack, но это также будет распаковывать все зависимости OSGi - наличие половины Eclipse, распакованного в каждом каталоге проекта, не является моей идеей веселья... -
Добавление папки класса в Eclipse требует, чтобы Maven
initializeзапускался один раз, поэтому создается каталогtarget/dependencies. -
Между чистыми проектами Maven и их зависимыми проектами Tycho в Eclipse нет никакого источника. Для изменения распространения с проекта Maven на проект Tycho, чтобы, например, Eclipse может показать потенциальную проблему компиляции, нужно выполнить
mvn installпроект Maven, а затем запуститьmvn clean initializeв проекте Tycho, чтобы удалить ранее распакованные зависимости и потянуть текущий набор. Затем вам нужно обновить проект Eclipse и надеяться, что Eclipse пойдет правильно.В том же духе просмотр источника зависимости из проекта Tycho не отображает первичный исходный файл, а скорее все, что доступно в
target/dependencies- вполне возможно, только файл.class.
Я думаю, что должен быть более разумный способ сделать это - что-то, что позволит проектам Eclipse и Maven более тесно интегрироваться.
Итак, что мне не хватает? Какова рекомендуемая настройка для этого варианта использования? Есть ли лучшая альтернатива? Предпочтительно что-то, что не требует установки связки репозиториев Nexus и/или p2?