我有一个非常基本的多项目Gradle设置,如下所示:
root
+--- build.gradle
+--- settings.gradle
+--- subproject1
\--- build.gradle
\--- subproject2
\--- build.gradle
settings.gradle
文件包含两个子项目。根项目不适用java插件,但两个子项目都适用。使用gradle build
时,所有内容都按预期构建。
但是,据我所知,由于我不在根项目中应用java
插件,因此不应该有build
任务。
gradle tasks
的输出,显示build
任务。gradle tasks --all
的输出仅显示:subproject1:build
和:subproject2:build
。所以我的问题是 - 在这种情况下究竟执行了什么? gradle是否只找到与所有子项目中的耗材模式匹配的每个任务?有关此任务名称解析的具体规则吗?我在哪里可以找到更多关于此的信息?
答案 0 :(得分:1)
是的,你是对的。如果仅使用任务名称或任务名称缩写,则该任务将在当前目录的所有子项目中执行。如果您只想调用subporject1
s build
任务,请使用gradle :subproject1:build
的绝对路径或相对路径。如果你在根目录e。 G。相对路径为gradle subproject1:build
您可以在https://docs.gradle.org/current/userguide/intro_multi_project_builds.html#N10762了解更多相关信息。
顺便说一下。你应该考虑使用Gradle Wrapper。每个兼顾Gradle的项目也应该使用Gradle Wrapper。它是Gradle最有效的强项之一,因为您只需要安装Java,而不需要Gradle或Maven或ant或其他任何东西,并且构建始终使用您设计的Gradle版本运行。