Проблема интеграции gradle с IntelliJ с независимыми подпроектами gradle - PullRequest
0 голосов
/ 10 октября 2018

У меня есть два независимых проекта 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

Мои главные настройки. 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
  }
}

Теперь у меня есть зависимость от module-b в subproject-two до module-a в subproject-one .Я использую переключатель компиляции (useProjectDependencies), чтобы включить их как зависимости проекта, когда я строю из основного проекта, и как обычные зависимости, когда я строю из подпроектов:

if(useProjectDependencies){
    compile project(':module-b')
} else {
    //Client dependencies
    compile "my.group.id:module-b
}

Через gradle, я теперь могу построитьосновной проект, включающий подпроект, а также каждый подпроект сам по себе.

Когда я сейчас открываю основной проект через IntelliJ, я вижу, что все модули распознаются правильно, а также работают перекрестные ссылки на классы между модулями.правильно (рефакторинг интерфейса между компонентами работает отлично).

Когда я сейчас пытаюсь использовать интеграцию gradle из Intellij и нажимаю на ассемблер для module-b , тогда это неправильноиспользует форму build.gradle и settings.gradle из subproject-two и не использует зависимости проекта.Похоже, что IntelliJ или демон Gradle ищет первые параметры. Gradle снизу вверх от module-b вместо использования в основном проекте 1035 *.

При сборке через терминал из папки main-project все работает правильно:

gradlew :module-b:assemble //correct *settings.gradle* and *build.gradle* is used

При удалении settings.gradle и build.gradle из subproject-two , затем правильно используется build.gradle из main-project .

Есть ли способ указать settings.gradle и build.gradle , который используется как часть интеграции IntelliJ gradle?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...