Учитывая коэффициент кода (из 12-факторного манифеста приложения) для приложения Gradle/Spring, развернутого в Cloudfoundry или Heroku

Мой вопрос относится к первому фактору 12-ти приложений-манифеста приложений: кодовой базе. (см. http://12factor.net/codebase).

TL; ДР:

этот фактор указывает на то, что между кодовыми базами и развёртываются отношения "один к одному", поэтому в этом случае вы не должны использовать одну и ту же базу данных (репозиторий) для обоих приложений.

Мое требование. У меня есть приложение веб-сайта Spring и пакетное Spring приложение, совместно использующее общий код, то есть модель домена (классы сущности JPA). Мне нужно иметь возможность распространять этот общий код. И оба приложения должны использовать одну и ту же версию общего кода в любой момент.

Моя текущая настройка. В настоящее время у меня есть три "верхних уровня" репозитория на github:

  • Модель домена (классы сущностей JPA) repo
  • Репозиторий веб-приложений
    • Модель домена /gradle проект (включен в git subtree pull/push)
  • Репозиторий пакетного приложения
    • Модель домена /gradle проект (включен в git subtree pull/push)

Обратите также внимание на то, что репозитория модели домена работает отдельно (как указано выше), но также вложена как на веб-сайте, так и на репозитории пакетного приложения. Я использую git subtree pull/push для включения этого репо-модели домена в качестве каталога и проекта gradle в двух других репозиториях. Причина этого в том, что Heroku строит сам код из репозиториев.

Все это очень утомительно и подвержено ошибкам.

Кто-нибудь может посоветовать лучшее решение?

9
задан balteo 08 дек. '15 в 16:40
источник поделиться

2 ответов

Я бы опубликовал общий код для частного репозитория Maven на Bintray, а затем добавит это частное репо к другим потребительским приложениям и укажу общий модуль как зависимость. Это не гарантирует, что оба они будут зависеть от одной и той же версии, но которые можно легко управлять с помощью внешних процессов с помощью таких инструментов, как плагин Maven Versions. Но вы также можете захотеть добавить более гибкую систему сериализации, чтобы свободно соединять модели домена двух приложений.

2
ответ дан James Ward 19 янв. '16 в 2:54
источник поделиться

Я бы связал модели домена в пакете (не уверен, что java/ gradle говорит для таких пакетов, в рубине это будет драгоценный камень) и установите его на производство в качестве зависимости. В противном случае git submodule также является опцией

-1
ответ дан Achilles 17 дек. '15 в 13:31
источник поделиться

Другие вопросы по меткам