[英]Gradle - subprojects exclude parent defined project dependency
How can I exclude parent defined compile project
dependency? 如何排除父定义的compile project
依赖?
Structure of modules is as follows: 模块结构如下:
- build.gradle
- settings.gradle
- MAIN_MODULE_1
- build.gradle
- MODULE1
- build.gradle
- MODULE2
- build.gradle
- MODULE3
- build.gradle
- MODULE4
- build.gradle
And dependency model should be: 依赖模型应该是:
- MODULE1 <- MAIN_MODULE_1
- MODULE2 <- MAIN_MODULE_1
- MODULE3 <- MAIN_MODULE_1
- MODULE4 <- MAIN_MODULE_1
Which means, having 这意味着,拥有
// build.gradle
subprojects {
apply plugin: 'java'
dependencies {
compile project('MAIN_MODULE_1')
}
}
// settings.gradle
include ':MAIN_MODULE_1'
include ':MODULE1'
include ':MODULE2'
include ':MODULE3'
include ':MODULE4'
will create circular dependency of MAIN_MODULE_1
on itself, which is wrong. 将创建MAIN_MODULE_1
对自身的循环依赖,这是错误的。
and having the dependency in each module (of total count not 4 but 120) seems wrong to me. 并且在每个模块中具有依赖性(总计数不是4但是120)对我来说似乎是错误的。
You can use the configuration block : 您可以使用配置块:
project(':MAIN_MODULE_1') {
apply plugin: 'java'
}
configure(subprojects - project(':MAIN_MODULE_1')) {
apply plugin: 'java'
dependencies {
compile project('MAIN_MODULE_1')
}
}
The answer is coming from this other question Gradle exclude plugin in main project for specific subproject(s) 答案来自另一个问题Gradle在特定子项目的主项目中排除插件
You can conditionally apply the dependency only if you are not in project MAIN_MODULE_1
: 只有当您不在项目MAIN_MODULE_1
才可以有条件地应用依赖关系:
dependencies {
if (!project.name.equals("MAIN_MODULE_1")) {
compile project(':MAIN_MODULE_1')
}
}
The answer below is a cleaner solution. 以下答案是一个更清洁的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.