我有两个独立的gradle项目,我也想从一个主要gradle项目构建:
main-project
build.gradle
settings.gradle
--subproject-one
build.gradle
settings.gradle
--module-a
build.gradle
--subproject-two
build.gradle
settings.gradle
--module-b
build.gradle
我的top settings.gradle包括子项目中的所有模块:
file('subproject-one').eachDir { dir ->
if(dir.list().contains("build.gradle")) {
include dir.name
project(":${dir.name}").projectDir = dir
}
}
file('subproject-two').eachDir { dir ->
if(dir.list().contains("build.gradle")) {
include dir.name
project(":${dir.name}").projectDir = dir
}
}
现在我从 subproject-two 中的 module-b 到 subproject-one 中的 module-a 有依赖性em>。从主项目构建时,我使用一个编译开关(useProjectDependencies)将它们作为项目依赖项;从子项目中构建时,将它们作为普通依赖项包括在内:
if(useProjectDependencies){
compile project(':module-b')
} else {
//Client dependencies
compile "my.group.id:module-b
}
通过gradle,我现在可以构建主项目,包括子项目,以及每个子项目本身。
当我现在通过IntelliJ打开主项目时,我看到所有模块都被正确识别,并且模块之间的类的交叉引用也正常工作(组件之间的重构接口运行良好)。
当我现在尝试使用Intellij的gradle集成并单击组装 module-b 时,它错误地使用了 build.gradle 形式, subproject-two 中的 settings.gradle ,并且不使用项目依赖项。看起来像IntelliJ或gradle守护程序搜索第一个设置。从 module-b 以一种自底向上的方式渐变,而不是在 main-project 中使用它。
当我通过终端从 main-project 文件夹进行构建时,所有工作正常:
gradlew :module-b:assemble //correct *settings.gradle* and *build.gradle* is used
当我从 subproject-two 中删除 settings.gradle 和 build.gradle 时,然后从 main中删除build.gradle -project 正确使用。
是否可以指定用作IntelliJ gradle集成的一部分的 settings.gradle 和 build.gradle ?