sbt:将插件发布到本地 repo 并从中解析

sbt: publishing plugin to and resolving from local repo

我正在尝试将 sbt 插件发布到本地文件仓库。在插件的 build.sbt 我有:

publishTo := Some(Resolver.file("localtrix", file("/Users/jast/repo/localtrix")))

我 运行 publish 任务,它被很好地发布到 /Users/jast/repo/localtrix/org/me/sbt-plugin_2.12_1.0/1.2.3

在另一个项目中,我想解决这个插件。在 project/plugins.sbt 我有:

resolvers += Resolver.file("localtrix", file("/Users/jast/repo/localtrix"))
addSbtPlugin("org.me" % "sbt-plugin" % "1.2.3")

我在这个项目中尝试 运行 sbt,我得到:

[info] Updating ProjectRef(uri("file:/Users/jast/playspace/untitled38/project/"), "untitled38-build")...
[warn]  module not found: org.me#sbt-plugin;1.2.3
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/org.me/sbt-plugin/scala_2.12/sbt_1.0/1.2.3/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.me/sbt-plugin/scala_2.12/sbt_1.0/1.2.3/ivys/ivy.xml/2017.2+4-3037ba82+20180314-1919/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/jast/.ivy2/local/org.me/sbt-plugin/scala_2.12/sbt_1.0/1.2.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/me/sbt-plugin_2.12_1.0/1.2.3/sbt-plugin-1.2.3.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/jast/.sbt/preloaded/org.me/sbt-plugin/scala_2.12/sbt_1.0/1.2.3/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/jast/.sbt/preloaded/org/me/sbt-plugin_2.12_1.0/1.2.3/sbt-plugin-1.2.3.pom
[warn] ==== localtrix: tried
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.me#sbt-plugin;1.2.3: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

那么我怎样才能以正确解析的方式发布到本地存储库呢?

注意:publishLocal 并从 .ivy2/local 解析有效,但我希望能够发布到一个存储库,我可以将其复制到另一台机器而不会弄乱该目录。

您在名义上错过了 scala 版本。而且您在发布的工件中的插件名称 _1.0 中也有奇怪的后缀,因此仅修复 scala 版本可能还不够。

这应该有效。

addSbtPlugin("org.me" % "sbt-plugin_2.12_1.0" % "1.2.3")

如果您发现此后缀 _1.0 的来源,修复 scala 版本应该会有所帮助:

addSbtPlugin("org.me" %% "sbt-plugin" % "1.2.3")

评论后更新

好的,谢谢,我不知道插件的工作方式不同。

但尝试为解析器定义不同的解析器(对我有用):

resolvers += "localtrix" at "file:///Users/jast/repo/localtrix"
addSbtPlugin("org.me" % "sbt-plugin" % "1.2.3")

sbt 插件默认发布 ivy-style,因此当您引用本地存储库时,请使用 Resolver.ivyStylePatterns。发布:

publishTo := Some(Resolver.file("localtrix", file("/Users/jast/repo/localtrix"))(Resolver.ivyStylePatterns))

并解决:

resolvers += Resolver.file("localtrix", file("/Users/jast/repo/localtrix"))(Resolver.ivyStylePatterns)
addSbtPlugin("org.me" % "sbt-plugin" % "1.2.3")

或者您可以为插件设置 publishMavenStyle := true,但我看到您已经解决了这个问题。