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 '19

Answers:


302

要执行特定子项目的任务,请指定其任务路径。例如:

gradle :ABC:build

领导者:代表根项目。ABC是子项目,是该项目中build的任务。


4
如何通过config(而不是命令行)进行控制,以仅组装一个子项目?对于Google的Release Pipelines,它会在根项目中触发“渐变清理程序集”。对我而言,该尝试构建AppEngine和Android构建。发布管道将在Android版本上失败,因为它没有安装SDK,这对于瞬态计算机而言是可以理解的。另外,Release Pipelines似乎也不提供任何配置选项。
brunobowden

在我的情况下,根项目仍处于检查状态,并发出我现在不想处理的错误消息。很烦人。
Wolfgang Fahl

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA更好,它将处理模块的依赖项。
约翰

84

找到了一种快速的方法

gradle build -p moduleA

moduleA是模块的目录。

上面的命令将构建moduleA和所有子模块,并moduleA应为其路径


4
上面的命令构建一个moudleA及其所有子模块,而moduleA应该是它的路径gradle build -p path\pathSt\moduleA
Viraj

1
我有一个子项目的包装器,它本身没有gradle文件。与选择的答案不同,这对我有用。也感谢您在评论中的澄清,您可以将其添加到答案中吗?
Vlasec 2015年


5

在此处输入图片说明

如果您的IDE是Android Studio,则有一种简单的方法。只需选择要编译的模块文件夹,然后单击“生成”,然后选择“将模块设为您的模块文件夹”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.