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
,但我看到您已经解决了这个问题。
我正在尝试将 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
,但我看到您已经解决了这个问题。