Gradle построить только один модуль

152

У меня есть несколько модулей Gradle сборки. Я хочу выполнить цели для одного модуля, используя root. Пример:

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

Таким образом, каждая цель может быть запущена из корня, указывая модуль. Есть ли простой способ сделать это?

Спасибо !

Viraj
источник
if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } ..., Это то, что вы хотите достичь?
Пепуч
@pepuch, не могли бы вы уточнить? Я хотел бы помещать обновления в мое приложение, в котором есть аар, но чтобы оно создавало только изменения в приложении, не перестраивая библиотеку.
The_Martian

Ответы:

302

Чтобы выполнить задачу определенного подпроекта, укажите путь к ней . Например:

gradle :ABC:build

Ведущий :выступает за корневой проект. ABCэто подпроект, и buildзадача в этом проекте.

Питер Нидервизер
источник
4
Как вы можете управлять через config, а не из командной строки, чтобы собрать только один подпроект из многих? Для релизных конвейеров Google он запускает «чистую сборку» в корневом проекте. Для меня это попытка собрать сборки AppEngine AND Android. Выпуск конвейера завершится неудачно в сборке Android, так как на нем не установлен SDK, что понятно для временного компьютера. Также не похоже, что Release Pipelines также предлагает какие-либо параметры конфигурации.
Brunobowden
В моем случае корневой проект все еще проверяется и выдает сообщения об ошибках, с которыми я не хочу сейчас иметь дело. Очень надоедливый.
Вольфганг
gradle :ABC:clean :ABC:build
СтаниславКо
gradle build -p moduleA лучше, он будет обрабатывать зависимости модуля.
Джон
84

Нашел быстрый способ

gradle build -p moduleA

moduleA - это каталог модуля.

Выше команда строит moduleAи все его подмодули, и moduleAдолжен быть его путь

Viraj
источник
4
Выше команды создайте moudleA и все его подмодули, а moduleA должен быть его путем gradle build -p path\pathSt\moduleA
Viraj
1
У меня есть оболочка для подпроектов, у которой нет собственного файла градала. В отличие от выбранного ответа, это работает для меня. Также спасибо за разъяснение в комментарии, не могли бы вы добавить его в ответ?
Власек
24

На Mac OS единственный вариант, который работает со мной:

./gradlew  ABC:build

ABC это имя модуля

(Это может работать и в Linux)

Махер Абутраа
источник
5

введите описание изображения здесь

Если вашей IDE является Android Studio, есть простой способ. Просто выберите папку модуля, которую вы хотите скомпилировать, затем нажмите «Создать» и выберите «Создать модуль» как «папку вашего модуля».

шаоцзюнь лю
источник