Для наглядности предположим, что у нас есть ~200 модулей, и каждый из них имеет в среднем ~200 классов.
Модули своего рода динамика: могут появляться новые модули с новыми требованиями, а также могут быть случаи, когда модули больше не нужны и поэтому отбрасываются.
Изначально мы думали об организации этого мультимодуля. -градационный проект. Однако сложность создания новых модулей и их связывания друг с другом нетривиальна (например, нам необходимо предотвратить циклические зависимости между модулями, что оказалось довольно хлопотно).
Поэтому мы рассматривал возможность объединения всех модулей в пакеты в рамках одного довольно большого проекта. Дополнительные условия о зависимостях можно проверять динамически с помощью Archunit.
Однако эта новая организация приведет к увеличению времени сборки, поскольку javac не компилируется параллельно, а также не Gradle Кажется, невозможно распараллелить загрузку, даже если исходные файлы имеют естественный порядок и могут быть скомпилированы независимо - модули имеют четко определенные интерфейсы, и все модули ссылаются только на интерфейсы, а не на реализации других модулей.
Итак, вопрос:
- Есть ли способ распараллелить сборку Java в рамках одного большого проекта?
- Есть ли канонический способ справиться с проектом, состоящим большого количества динамически изменяющихся подмодулей?
Подробнее здесь: https://stackoverflow.com/questions/793 ... a-projects