У нас есть большой проект (~ 215 пакетов и подсчет) osgi (felix + springdm), построенный с помощью maven и плагина maven-osgi.
У нас есть несколько проблем с maven:
1. subodules pom должны унаследовать от родительского pom, чтобы воспользоваться общими переменными и зависимостями (это нормально), но тогда родительский pom должен включать все пакеты pom, чтобы иметь возможность строить все вместе. Этот вид циркулярной ссылки делает очень сложным синхронизацию.
2. индивидуальная версия подрасслоений была настолько сложной, что было принято решение (до того, как я присоединился к проекту) использовать одну и ту же версию для всех пакетов. Это означает, что теперь мы обновляем версию всех пакетов для каждой версии, даже если на самом деле их просто изменяет. Это делает всю концепцию osgi немного бессмысленной ИМХО. Обратите внимание, что я не говорю, что мы продолжаем затрагивать только меньшинство пакетов, мы работаем над всеми из них, но каждый выпуск обычно содержит 1 или 2 функции, которые затрагивают только некоторые пакеты.
3. для выполнения пакета и развертывания финального артефакта нам нужен еще один подмодуль, который импортирует все пакеты, необходимые для развертывания (все, кроме нескольких для тестов и макетов). [Редактировать] Обратите внимание, что эта агрегация отличается от той, что находится в основном помпе, поскольку она не компилирует пакеты, а просто выбирает их из репозитория maven.
4. система зависимостей maven и импорт плагинов osgi иногда трудно поддерживать. Слишком просто забыть об импорте или поставить неправильную зависимость.
[редактировать] В каждом пакете pom есть такой раздел: `
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>
</Export-Package>
<Import-Package>
com.google.gson,
org.apache.log4j,
org.apache.log4j.spi,
org.dom4j,
com.myinterfaces
</Import-Package>
</instructions>
</configuration>
</plugin>`
По всем этим причинам мы в порядке, но не совсем довольны maven. Недавно кто-то предложил Gradle не как панацею, а как определенные улучшения в текущей ситуации.
Не могли бы вы переехать в gradle? и в случае, если это будет наилучшим образом?
Кто-то другой испытал такую же ситуацию? Я думаю, что это должно быть общим для всех крупных проектов с Osgi.
Отказ от ответственности: я искал похожие вопросы:
Buildr, Gradle или ждать Maven 3?
Ищите хорошую среду разработки для пакетов OSGi
Maven: OSGI, пакеты и проекты с несколькими модулями
но там, где не о субмодулях osgi или не о gradle.