Intellij анализ не выявляет unmanagedSourceDirectories после импорта sbt - PullRequest
1 голос
/ 15 апреля 2019

Если я определю проект sbt scala, который зависит от двух внешних исходных папок, анализ не будет работать правильно.Допустим, я определил следующий build.sbt:

lazy val root = project.in(file("."))
  .settings(
    name := "repro",
    version := "1.0",
    scalaVersion := "2.11.8",
    unmanagedSourceDirectories in Compile +=
            baseDirectory.value / ".." / "ext1" /  "src" / "main" / "scala",
    unmanagedSourceDirectories in Compile +=
      baseDirectory.value / ".." / "ext2" /  "src" / "main" / "scala"
  )

, чтобы источники в ext1 зависели от источников в ext2.Итак, в этом примере я определил trati T1 в ext1 и trait T2 в ext2, который зависит от T1.И у меня есть класс в моем проекте, который зависит от T2.Это все хорошо скомпилируется в sbt.Но когда я импортирую этот проект sbt в IntelliJ, он компилируется.Однако, когда я открываю свою черту T2 в редакторе, она выдает ошибку, когда я ссылаюсь на T1, говоря: «Не удается разрешить ext1».Почему я получаю эту ошибку?

Воспроизведение этой проблемы можно найти на github по следующим ссылкам:

https://github.com/hughgearse/repro

https://github.com/hughgearse/ext1

https://github.com/hughgearse/ext2

1 Ответ

0 голосов
/ 16 апреля 2019

Создать определение сборки в ext1/build.sbt

lazy val root = project.in(file("."))
  .settings(
    name := "ext1",
    version := "1.0",
    scalaVersion := "2.11.8"
  )

, а затем ссылаться на ext1 как внешнюю сборку в ext2/build.sbt через RootProject

val ext1 = RootProject( file("../ext1") )

lazy val root = project.in(file(".")).dependsOn(ext1)
  .settings(
    name := "ext2",
    version := "1.0",
    scalaVersion := "2.11.8"
  )

, а затем аналогичным образом ссылаются как на внешние сборки в repro/build.sbt

val ext1 = RootProject( file("../ext1") )
val ext2 = RootProject( file("../ext2") )

lazy val root = project.in(file(".")).dependsOn(ext1, ext2)
  .settings(
    name := "repro",
    version := "1.0",
    scalaVersion := "2.11.8",
    unmanagedSourceDirectories in Compile +=
            baseDirectory.value / ".." / "ext1" /  "src" / "main" / "scala",
    unmanagedSourceDirectories in Compile +=
      baseDirectory.value / ".." / "ext2" /  "src" / "main" / "scala"
  )

Реимпортировать repro проект, и IntelliJ должен иметь возможность анализировать все источники.

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