我有一个项目,我在其中构建了一个 sbt 设置插件,我打算将其用于我所有其他项目。在这个 sbt 插件项目中,我定义了几个常用设置,例如解析器、scm 信息和其他静态设置。
然后,我将此设置发布到 GitHub 中的组织包,我甚至可以看到它可用,如下所示:https: //github.com/orgs/open-electrons/packages
然后,我在其他项目中使用此 sbt 设置插件,方法是将其添加到 plugins.sbt 项目中,如下所示:
addSbtPlugin("com.openelectrons" % "openelectrons-sbt-settings" % "0.0.1")
当我运行此具有以下 build.sbt 的项目(例如项目 A)时:
import SharedSettings._
lazy val commonSettings = SharedSettings.settings
// Build definition for the ocpp-gateway-server project
lazy val ocppGatewayServer = (project in file("."))
.enablePlugins(PlayScala, DockerPlugin)
.settings(
commonSettings,
....
....
SharedSettings 来自 GitHub 包中提供的 sbt 设置插件。然后,我将所有这些设置都包含在该项目中,如上所示。SharedSettings 实际上包含如下定义的解析器:
// Dependency resolvers
val sharedResolvers: Seq[Resolver] = Seq(
Resolver.mavenCentral,
"Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases/",
"Typesafe Snapshots" at "https://repo.typesafe.com/typesafe/snapshots/",
"GitHub Packages" at "https://maven.pkg.github.com/open-electrons/open-electrons-templates"
) ++ Resolver.sonatypeOssRepos("snapshots") ++ Resolver.sonatypeOssRepos("releases")
当我运行我的项目 A 时,我甚至看不到 GitHub 包已解析。构建在 repo1 和以下 3 个位置中查找 openelectrons-sbt-settings 依赖项:
[error] not found: https://repo1.maven.org/maven2/com/openelectrons/openelectrons-sbt-settings_2.12_1.0/0.0.1/openelectrons-sbt-settings-0.0.1.pom
[error] not found: /home/runner/.ivy2/localcom.openelectrons/openelectrons-sbt-settings/scala_2.12/sbt_1.0/0.0.1/ivys/ivy.xml
[error] not found: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.openelectrons/openelectrons-sbt-settings/scala_2.12/sbt_1.0/0.0.1/ivys/ivy.xml
[error] not found: https://repo.typesafe.com/typesafe/ivy-releases/com.openelectrons/openelectrons-sbt-settings/scala_2.12/sbt_1.0/0.0.1/ivys/ivy.xml
我没有看到任何尝试从 GitHub Packages 下载的日志行。我该如何修复这个问题?
我相信,为了找到插件,需要在文件本身
resolvers
中覆盖plugins.sbt
(这可能是评论中提到的:如果将插件的解析器放在插件本身中,则会创建引导问题)。尝试一下: