#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