如何防止 Gradle 构建非项目目录?

Tom*_*sky 5 gradle

在 Gradle 示例(包含在版本 2.2.1 中)中有一个 java/multiproject 项目。

settings.gradle文件定义了以下项目:

包括“共享”、“api”、“服务:webservice”、“服务:共享”

请注意,它本身并不是services一个项目,而只是一个包含和项目的目录。webserviceshared

当我从根目录运行命令时gradle build,我注意到 gradle 成功构建后,它会在目录中创建/services一个/build包含/lib/tmp目录的目录。

里面/services/build/lib是一个罐子:services-1.0.jar里面装的东西很少;具体来说只是一个META-INF/MANIFEST.MF包含以下内容的文件:

Manifest-Version: 1.0
provider: gradle
Run Code Online (Sandbox Code Playgroud)

那么是什么导致 Gradle 为这个非项目构建 jar 呢?如何在结构类似的多项目项目中防止这种行为?

/services不是一个项目,我根本不想在/build文件夹内创建任何内容。是的,我可以删除它,但我想避免首先构建这个 jar/在这个非项目上运行任何任务的不必要的工作。

Opa*_*pal 4

老实说,我不明白为什么 gradle 会构建这个文件夹。我猜是因为它是一种transient文件夹。但是可以通过在主脚本中添加以下代码来排除它build.gradle

project(':services').jar { onlyIf { false } } 
Run Code Online (Sandbox Code Playgroud)

services.jar通过以下内容也可以获得期望的效果(消除) settings.gradle

include "shared", "api", "services/webservice", "services/shared"
Run Code Online (Sandbox Code Playgroud)

包含文件而不是项目路径。