具有独立gradle子项目的IntelliJ gradle集成问题

时间:2018-10-10 15:35:19

标签: gradle intellij-idea

我有两个独立的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

0 个答案:

没有答案