У меня есть куча плагинов на основе 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?