Я хочу разработать часть программного обеспечения на java с некоторыми графическими интерфейсами (в частности, приложение android). Я хотел бы, чтобы базовая функциональность была автономным модулем, который полностью независим от любого GUI или другого программного уровня, который мог бы быть построен поверх.
Основной модуль - это сам проект Gradle:
core
├── src
├── build.gradle
└── settings.gradle
Для приложения оно включено как подмодуль git в репозиторий root:
project
├── app
│ ├── src
│ └── build.gradle
├── core
│ ├── src
│ ├── build.gradle
│ └── settings.gradle
├── build.gradle
└── settings.gradle
Поскольку основной модуль независим и имеет собственный репозиторий, у меня есть уметь рассматривать его как проект Gradle root; следовательно, у него есть свой собственный settings.gradle
. Но когда я работаю в проекте root, я хочу, чтобы он вел себя как подпроект последнего (так что выполнение gradle
в каталоге core
распознает его как подпроект :core
с использованием settings.gradle
в родительский каталог). И без изменения содержимого core
(который будет подмодулем git).
Я не хочу создавать отдельную ветку в репо core
git, в которой нет settings.gradle
, потому что в этой ветке репо не имеет смысла само по себе, и, опять же, core
не должен "ничего знать" о проекте root.
Идеальным решением будет альтернативная версия git подмодулей, в которой пользовательские изменения в подмодуле могут быть привязанным к родительскому репо в одиночку, не затрагивая исходное репо подмодуля. (С возможностью слияния вышестоящих изменений в подмодуле с локальными коммитами.) Затем я бы добавил один такой «локальный» коммит, который удаляет файл core/settings.gradle
.
Есть ли способ добиться этого?