Невозможно получить доступ к зависимостям всего проекта в файлах исходного кода - PullRequest
2 голосов
/ 12 мая 2019

У меня есть приложение Play Framework с такой структурой каталогов:

server
  - app
    - services
      - MyService.scala
  - project
    - Dependencies.scala
    - src/main/scala
      - MyMetaService.scala
  - build.sbt

В каталоге /project размещена задача генератора исходного кода (sbt Task), для которой я хотел бы иметь возможностьиспользуйте волшебство.Мой build.sbt файл содержит ссылку на пакет circe, и если я выдаю:

import io.circe._

в MyService.scala, пакет разрешается нормально.Но если я сделаю то же самое в MyMetaService.scala, пакет не будет решен.Я знаю, что это потому, что почему-то я не указываю, что зависимость должна применяться к каталогу /project, но я не знаю, как это сделать.Вот мой build.sbt:

import src.main.scala.generate.ModelGenerator

name := "server"

version := "1.0"

lazy val `server` =
  (project in file("."))
    .settings(libraryDependencies ++= Dependencies.dependencies)
    .enablePlugins(PlayScala)

resolvers ++=
  Seq(
    "Akka Snapshot Repository" at "http://repo.akka.io/snapshots/",
    "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases",
    "releases" at "http://oss.sonatype.org/content/repositories/releases",
    "snapshots" at "http://oss.sonatype.org/content/repositories/snapshots"
  )

scalaVersion := "2.12.2"

sourceGenerators in Compile ++= Seq(
  ModelGenerator.generatorTask.taskValue
)

И мой Dependencies.scala:

import play.sbt.PlayImport._
import sbt._

object Dependencies {

  val dependencies: Seq[ModuleID] =
    Seq(
      jdbc,
      ehcache,
      ws,
      specs2 % Test,
      guice,
      "io.circe" %% "circe-core" % "0.11.1",
      "io.circe" %% "circe-generic" % "0.11.1",
      "io.circe" %% "circe-parser" % "0.11.1"
    )

}

1 Ответ

2 голосов
/ 12 мая 2019

Создайте отдельный build.sbt для проекта мета-сборки в project/build.sbt и импортируйте зависимости таким же образом, как и для правильной сборки.Например,

// This is project/build.sbt

val circeVersion = "0.10.0"

libraryDependencies ++= Seq(
  "io.circe" %% "circe-core",
  "io.circe" %% "circe-generic",
  "io.circe" %% "circe-parser"
).map(_ % circeVersion)

теперь должно сделать доступным Circe для project/.../MyMetaService.scala

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