Невозможно импортировать классы из одного модуля в другой - Scala - PullRequest
1 голос
/ 17 марта 2019

Я создал проект с 3 различными модулями. Первый называется http, а второй algebra. Я соединил их в один файл в sbt, но когда я хочу использовать классы из algebra в http, я не могу импортировать их, потому что они не видят друг друга. Это мой sbt файл:

lazy val commonSettings = Seq(
  libraryDependencies ++= Seq(
    "org.typelevel" %% "cats-core" % CatsVersion,
    "org.typelevel" %% "cats-effect" % "1.2.0",
    "org.typelevel" %% "cats-tagless-macros" % "0.2.0",
    "org.typelevel" %% "cats-mtl-core" % "0.5.0",
  )
)

lazy val root = project.in(file(".")).aggregate(http, domain, algebra)
  .settings(commonSettings)
  .settings(libraryDependencies ++= Seq(
    "org.tpolecat" %% "doobie-core" % DoobieVersion,
    "org.tpolecat" %% "doobie-h2" % DoobieVersion,
    "org.tpolecat" %% "doobie-scalatest" % DoobieVersion,
    "org.tpolecat" %% "doobie-hikari" % DoobieVersion,
  ))

lazy val http = (project in file("http"))
  .dependsOn(algebra)
  .settings(commonSettings)
  .settings(
    name := "my-http",
    libraryDependencies ++= Seq(
      "io.circe" %% "circe-generic" % CirceVersion,
      "io.circe" %% "circe-literal" % CirceVersion,
      "io.circe" %% "circe-generic-extras" % CirceVersion,
      "io.circe" %% "circe-parser" % CirceVersion,
      "io.circe" %% "circe-java8" % CirceVersion,
      "io.circe" %% "circe-config" % CirceConfigVersion,

      "org.http4s" %% "http4s-blaze-server" % Http4sVersion,
      "org.http4s" %% "http4s-circe" % Http4sVersion,
      "org.http4s" %% "http4s-dsl" % Http4sVersion,
    ))

lazy val domain = project.in(file("domain"))

lazy val algebra = (project in file("algebra"))
  .settings(commonSettings)
  .settings(
    name := "my-algebra",
  )

Я пытался обновить все проекты, но это не сработало.

class MyRoutes[F[_]: Effect](services: MyService[F]) extends Http4sDsl[F]{...}

Класс MyRoutes находится в модуле http, а MyService в модуле алгебры. Ошибка Cannot find declaration to go to на MyService. Как я могу это исправить?

1 Ответ

1 голос
/ 17 марта 2019

Хорошо, я решил эту проблему. Это была моя глупая ошибка. Я не пометил каталог как источник root где MyService. Из-за этого в http модуле я не смог увидеть этот класс.

...