sbt 插件的 ivy/maven 发布的差异

Posted

技术标签:

【中文标题】sbt 插件的 ivy/maven 发布的差异【英文标题】:Differences in ivy/maven publishing for sbt plugin 【发布时间】:2018-02-04 00:21:39 【问题描述】:

我有两个 SBT 插件:PluginA 和 PluginB。 PluginA 依赖于 PluginB 中的任务。每当我使用“publishLocal”在本地将 PluginB 发布到“~/.ivy2”时,PluginA 就会工作。虽然当我使用“publishM2”将 PluginB 发布到本地“~/.m2”时依赖关系仍然得到解决,但 PluginA 的编译任务失败:

“对象 xxx 不是包 yyy 的成员”。

我尝试将“publishMavenStyle”设置为 true 和 false,并调整解析器,但都不起作用。

为什么会发生这种情况,有没有办法在以 maven 风格发布时让它工作?

【问题讨论】:

【参考方案1】:

这是我的一个错误。我使用 from 错误地添加了插件

addSbtPlugin("com.xxyy" %% "PluginA" % "0.0.2" from "http://internal.repo.com")

虽然找到了POM,所以找到了资源,但是没有找到对应的jar,所以构建会失败。

为了解决这个问题,我在添加插件之前添加了一个解析器

resolvers += "xxyy" at "http://internal.repo.com" addSbtPlugin("com.xxyy" %% "PluginA" % "0.0.2")

【讨论】:

以上是关于sbt 插件的 ivy/maven 发布的差异的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中持续集成的构建工具(Ant、Ivy、Maven、Phing?)

使用 sbt.version 1.2.8 发布到 nexus 的 Sbt 插件无法由使用 sbt.version >1.2.8 的 sbt 项目解决

Nexus Ivy Maven:二级依赖忽略传递

如何通知 SBT 使用插件的特定 scala 版本?

如何在依赖 URL 中下载没有 SBT 版本的 sbt 插件依赖?

覆盖 SBT 插件中的映射