在 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/在这个非项目上运行任何任务的不必要的工作。
老实说,我不明白为什么 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)
包含文件而不是项目路径。
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |