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.

Таким чином, кожна мета може бути запущена з кореневим завданням модуля. Чи є простий спосіб це зробити?

Дякую !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... Це ви хочете досягти?
pepuch

@pepuch, чи можете ви уточнити? Я хотів би підштовхнути оновлення до свого додатка, в якому є aar, але змусити його створювати лише зміни в додатку без відновлення бібліотеки.
The_Martian

Відповіді:


302

Щоб виконати завдання певного підпроекту, вкажіть його шлях до завдання . Наприклад:

gradle :ABC:build

Провідні :позиції для кореневого проекту. ABCє підпроектом і buildзавданням у цьому проекті.


4
Як ви можете керувати через конфігурацію, а не командний рядок, щоб зібрати лише один підпроект з багатьох? Для випускних трубопроводів Google вимкнено "чисту збірку gradle" в кореневому проекті. Для мене це намагається створити додатки AppEngine AND Android. Pipeline Release не вдасться створити Android, оскільки в ньому не встановлено SDK, зрозумілий для перехідної машини. Крім того, схоже, що Release Pipelines не пропонує жодних параметрів конфігурації.
брунубоден

У моєму випадку кореневий проект все ще перевіряв і видає повідомлення про помилки, з якими я не хочу зараз працювати. Дуже дратує.
Вольфганг Фаль

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA краще, він буде обробляти залежності модуля.
Джон

84

Знайшов швидкий шлях

gradle build -p moduleA

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

Вище команда будує a moduleAі всі його підмодулі, і moduleAмає бути його шлях


4
Над командою побудуйте moudleA і все, що є підмодулем, а moduleA має бути його шлях gradle build -p path\pathSt\moduleA
Viraj

1
У мене є обгортка для підпроектів, яка не має власного файлу gradle. На відміну від обраної відповіді, це працює для мене. Також дякую за пояснення в коментарі, чи можете ви додати його до відповіді?
Власек

24

У Mac OS єдиний варіант, який працює зі мною:

./gradlew  ABC:build

ABC - це назва модуля

(Можливо, він працює і в Linux)


5

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

Якщо ваш IDE - Android Studio, існує простий спосіб. Виберіть папку модулів, яку ви хочете скомпілювати, а потім натисніть кнопку Створити та виберіть Зробити модуль 'папкою вашого модуля'.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.