Комментарии 13
Спасибо за комментарий.
В целом, предложенное решение в первую очередь полезно для локальной сборки. В локальной сборке этим недостатком можно пренебречь.
Адаптация для билд-сервера это просто приятный бонус. Если этот самый билд-сервер не настолько умный. Если все зависимые модули лежат в одном большом проекте, то этого недостатка в предложенном подходе не будет.
По моему мнению лучше не пытаться использовать один vcs репозиторий для всех модулей.
В идеале: один репозиторий – один модуль.
Отчасти согласен. С точки зрения идеальной организации кода это правильно. Но если у вас сотни или тысячи модулей, то порой гораздо удобнее их хранить вместе. В том числе для работы в IDE.
В идеале: один репозиторий – один модуль.
Не совсем согласен, от модулей маленького размера можно получить много преимуществ и не придется создавать сотни репозиториев.
С описанным в статье нам в компании очень помогает Pants, там эта функциональность идет из коробки
./pants changed --include-dependees=transitive --changes-since=f61ad76d5d37d8dae6f1c298e1365af423d9892e
Вот такой командой можно например получить список всех модулей, которые затронули изменения после определенного git коммита.
Дальше для этих модулей мы можем выполнять тесты, собирать артефакты, если требуется и так далее.
В результате имеем преимущества одного репозитория и сборка не страдает.
@sndl, я правильно понимаю, что Pants это не дополнение к maven, а альтернатива? Т.е. если кто-то уже на maven, глубоко и серьезно, то Pants не поможет?
Так-то есть gradle, который инкрементальный из коробки (помимо других преимуществ перед maven). Но смена билд системы это не всегда легко и просто
В нашем проекте мы схожую проблему решаем с помощью gradle. В перспективе можно будет отправить maven на заслуженный отдых (люди к maven привыкли/прикипели и не готовы сразу с ним расстаться).
но в данном случае приходится работать с тем, что уже есть и менять ничего в проекте для этого нельзя.
а почему нельзя-то?
На текущий момент слишком много заточено на мэйвен. Просто так взять и перейти на что-то более современное будет слишком трудозатратно и не будет иметь много смысла (ведь всё и сейчас работает).
В стратегическом плане, конечно, рано или поздно перейдем, я думаю, но до этого момента нужно ещё как-то дожить.
Если вдруг кто подписан и кому интересно, появилась возможность работы с Git. Пока пробная версия: https://github.com/bugy/incremaven/releases/tag/1.1.3a
Maven. Собираем только измененное