sbt.librarymanagement.Исключение ResolveException: ошибка загрузки в проекте sbt с помощью модуля плагина sbt

#scala #sbt #multi-module

#scala #sbt #многомодульный

Вопрос:

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

 import Build._
import sbt.Keys.scalacOptions

lazy val moduleA =
  module(id = "module-a", "module-a")

lazy val moduleB =
  module(id = "module-b", "module-b")

lazy val root =
  module(id = "sample-project", directory = ".")
    .aggregate(moduleA, moduleB)

lazy val plugin = Project(id = "plugin", base = file("plugin"))
  .settings(
    sbtPlugin := true,
    name := "MyPlugin"
  )
  .dependsOn(moduleA)
  

Где Build объявляются следующие помощники

 object Build {
  val scala212 = "2.12.11"
  val scala213 = "2.13.3"
  val projectScalaVersion = scala213
  val supportedScalaVersions = List(scala213, scala212)

  val projectVersion = "0.3.5-SNAPSHOT"
  val projectOrganization = "com.example"

  val commonSettings = Seq(
    version := projectVersion,
    crossScalaVersions := supportedScalaVersions,
    organization := projectOrganization,
    scalaVersion := projectScalaVersion,
    scalacOptions  = "-deprecation",
    scalafmtOnCompile := true
  )

  def module(id: String, directory: String): Project = {
    Project(id = id, base = file(directory))
      .settings(commonSettings: _*)
  }

  implicit class ProjectOps(project: Project) {
    def libraries(modules: ModuleID*): Project = {
      project.settings(libraryDependencies   = modules)
    }

    def disablePublish: Project = {
      project.settings(publishLocal := {}, publishM2 := {}, publish := {})
    }
  }
}
  

Я пытаюсь добавить плагин sbt, чтобы предоставить доступ к некоторым частям проекта с использованием задач.
К сожалению, при компиляции плагина я получаю следующую ошибку:

 sbt:sample-project> plugin/compile
[info] Updating 
[info] Resolved  dependencies
[warn] 
[warn]  Note: Unresolved dependencies path:
[error] stack trace is suppressed; run last plugin / update for the full output
[error] (plugin / update) sbt.librarymanagement.ResolveException: Error downloading com.example:module-a_2.12:0.3.5-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: https://repo1.maven.org/maven2/com/example/module-a_2.12/0.3.5-SNAPSHOT/module-a_2.12-0.3.5-SNAPSHOT.pom
[error]   not found: /Users/ltrojanowski/.ivy2/local/com.example/module-a_2.12/0.3.5-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.example/module-a_2.12/0.3.5-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo.typesafe.com/typesafe/ivy-releases/com.example/module-a_2.12/0.3.5-SNAPSHOT/ivys/ivy.xml
[error] Total time: 3 s, completed Aug 26, 2020 1:35:20 PM
  

Я не знаю, почему это происходит. Любая помощь или совет о том, как это исправить, были бы высоко оценены.

Комментарии:

1. На всякий случай, если кто-нибудь наткнется на это. Плагины Sbt для версии 1.x должны быть созданы с использованием scala 2.12. Но все равно было бы неплохо, чтобы обычная компиляция плагина запускала компиляцию зависимых модулей с помощью scalaVersion 2.12