Компилировать Java-классы только в многопроектных сборках для взаимозависимых проектов. - PullRequest
0 голосов
/ 22 ноября 2018

Мой вопрос касается межпроектных зависимостей и результирующих JAR-файлов

Структура проекта схожа с этим

root
 -- :a
 -- :b
 -- :c
 -- :d

Зависимости следующие (:d не имеет зависимостей)

a -> b -> c -> d

Компиляция :d содержит все файлы *.class в :d.Компиляция :c содержит источники, сгенерированные для :d и :c.Все идет нормально.

Однако, когда я компилирую root, он генерирует JAR для :d, затем компилирует и генерирует JAR для :c, который включает в себя CLASS файлы :d.Это продолжается до самого верха.

Проект root по-прежнему будет содержать скомпилированные подпроекты только один раз, но папка build\libs также будет содержать все промежуточные JAR-файлы.

Iзапустили сборку с --profile и заметили, что упаковка JAR-файлов заняла довольно много времени из общего процесса сборки.

Зависимые проекты включены в соответствующие файлы build.gradle, подобные этим (Пример для :b и :c)

Проект C

dependencies { compile project(':d') }

Проект B

dependencies { compile project(':c') }

На самом деле весь проект состоит примерно из 100 подпроектов, и существует большое количество взаимозависимых проектов.

Есть ли способ скомпилировать CLASS файлы без создания JAR?

Любая помощь с этим будет принята с благодарностью.

Указанный возможный дублирующий вопрос не относится к многопроектным сборкам или интер-проектные зависимости.

1 Ответ

0 голосов
/ 04 декабря 2018

В итоге у меня не было выбора, кроме как вручную добавить все модули в путь к классам и скомпилировать весь модуль таким образом.Время компиляции неоправданно велико.

Мы подумываем о том, чтобы отделить все, чтобы каждый модуль был библиотекой, которую можно импортировать из внутренней артефакты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...