如何排除父定义的compile project
依赖项?
模块结构如下:
- build.gradle
- settings.gradle
- MAIN_MODULE_1
- build.gradle
- MODULE1
- build.gradle
- MODULE2
- build.gradle
- MODULE3
- build.gradle
- MODULE4
- build.gradle
依赖模型应该是:
- MODULE1 <- MAIN_MODULE_1
- MODULE2 <- MAIN_MODULE_1
- MODULE3 <- MAIN_MODULE_1
- MODULE4 <- MAIN_MODULE_1
这意味着,
// 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'
将创建MAIN_MODULE_1
对自身的循环依赖,这是错误的。
并且每个模块中的依赖(总计数不是4但是120)对我来说似乎不对。
答案 0 :(得分:14)
您可以使用配置块:
project(':MAIN_MODULE_1') {
apply plugin: 'java'
}
configure(subprojects - project(':MAIN_MODULE_1')) {
apply plugin: 'java'
dependencies {
compile project('MAIN_MODULE_1')
}
}
答案来自另一个问题Gradle exclude plugin in main project for specific subproject(s)
答案 1 :(得分:11)
只有当您不在项目MAIN_MODULE_1
中时,才能有条件地应用依赖项:
dependencies {
if (!project.name.equals("MAIN_MODULE_1")) {
compile project(':MAIN_MODULE_1')
}
}
以下答案是一个更清洁的解决方案。