Gradle模块构建顺序

时间:2017-02-19 16:04:16

标签: android gradle build module

我有一个Gradle根项目SELECT TO_CHAR(getdate(), 'YYYY-MM-DDThh24:MI:SS'); ,包含两个子项目PP:foo。当然,Gradle按字母顺序构建它们:P:barbar。但是,当我在foo根目录中说foo时,我需要首先构建gradle build。这是因为P依赖于bar发布到本地Maven存储库的AAR(Android库)工件。 foobar都是此类Android库项目。

这看起来很简单,但我无法弄清楚。我读到了foo,所以在evaluationDependsOn中,我在第一行说:bar/build.gradle。唉,这似乎没有任何影响。这个Gradle功能最终是否已被破坏?

使用evaluationDependsOn "foo:",我可以强制首先构建compile project,但这会将编译后的类直接添加到foo,这是我不想要的。

所以我被困住了。我可以将bar重命名为foo,我的所有问题都将消失,但我仍然不愿称之为解决方案。

2 个答案:

答案 0 :(得分:5)

好的,让我自己回答这个问题。我想我找到了一个不错的解决方案。

Gradle中的项目依赖项通常用compile project表示,它不仅构建了另一个项目,还将其他项目的类添加到当前项目的类路径中。如果您只想确保在您的项目之前构建另一个项目,则可以使用任务依赖项

在我的Android环境中,bar/build.gradle,我说

preBuild.dependsOn ":foo:build"

一切都很好。现在foo总是在bar之前构建。

答案 1 :(得分:0)

这可能会帮助导致问题原因不同的人。

假设我有一个模块base,该模块生成主模块app所需的输出,因此我希望在base之前构建app

您可以在项目根目录中检查settings.gradle并检查配置。

我发现我以前的配置是

include ':app', ':base'

将其更改为

include ':base', ':app'

解决了构建顺序。