У меня есть проект osgi, который разбит на 3 репозитория. Каждый репозиторий имеет собственную сборку в репозиторий p2 с Tycho:
Repo1 -> P2 repo 1
Repo2 -> P2 repo 2
Repo3 -> P2 repo 3
Кроме того, в каждом репозитории есть целевой файл определения, который включает пакеты из сторонних репозиториев p2 и из репозиториев других проектов (репозиторий P21, репозиторий P2 2 или репозиторий P2 3 выше). Repo2 содержит зависимость от пакетов Repo1, Repo3 имеет зависимости от пакетов Repo1 и Repo2:
Repo1 Target Definition -> Eclipse Orbit P2
Repo2 Target Definition -> Eclipse Orbit P2, P2 repo1
Repo3 Target Definition -> Eclipse Orbit P2, P2 repo1, P2 repo2
Теперь у меня следующая проблема. После создания первого репозитория репозиторий P2 repo1 обновился и содержит функцию с новыми версиями моментальных снимков. Целевые определения Repo2 и Repo3 зависят от предыдущей версии снимка пакетов Repo1, и создание этих репозиториев невозможно без обновления соответствующих целевых определений (в Eclipse есть кнопка «Обновить» в Target Editor).
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="com.myproduct.feature.api.game.feature.group" version="1.0.0.201509251400"/>
<unit id="com.myproduct.feature.impl.game.feature.group" version="1.0.0.201509251400"/>
<repository location="http:............../target/repository/"/>
</location>
Таким образом, невозможно автоматически собрать все 3 репозитория, поэтому процесс сборки становится слишком сложным:
- Зафиксируйте изменения в первом репо и соберите его с помощью Jenkins.
- Обновите целевое определение repo2, чтобы оно указывало на новую версию функции repo 1.
- Зафиксируйте это обновление в repo2 и соберите его с помощью Jenkins.
и т.д....
Теперь я думаю использовать подмодули git для интеграции этих 3 репозиториев, чтобы избежать репозиториев p2 или переместить все в один репозиторий.