【发布时间】:2014-09-04 02:28:55
【问题描述】:
最近,我发现了一个有趣的 sbt 问题。我很难用几句话来描述它,所以这里是我所做的几个步骤。
我有一些用于部署的 scala 任务。我将它发布到我们本地的 nexus repo 中,所以几个项目可以使用它。这是内部关系回购的屏幕截图
因此,我将其放入 build.sbt 文件中。
"sbt.liquibase" % "**sbt-liquibase-deploy_2.10" % "1.0-3"**
在这种情况下,我必须指定 scala 版本 2.10,如果我重新加载使用
"sbt.liquibase" % "**sbt-liquibase-deploy" % "1.0-3"**
它因未解决的依赖而失败,我对此很好。不过后来觉得这个任务应该是一个插件,所以可以在build.sbt文件中使用。我将设置 sbtPlugin:true 添加到任务中。在我发布之后,工件从 sbt-liquibase-deploy_2.10 更改为 sbt-liquibase-deploy_2.10_0.13。基本上,附加了 sbt 版本。
当我尝试添加插件来使用这些代码时
addSbtPlugin("sbt.liquibase" % "sbt-liquibase-deploy_2.10" % "1.0-3")
由于未解决的依赖关系而失败
addSbtPlugin("sbt.liquibase" % "sbt-liquibase-deploy_2.10_0.13" % "1.0-3")
它也因未解决的依赖关系而失败
但如果我根本不使用 scala 和 sbt 版本,那很好。
addSbtPlugin("sbt.liquibase" % "sbt-liquibase-deploy" % "1.0-3") //成功
我有 3 个问题。
为什么库依赖需要 scala 版本,而插件依赖不需要。修复它花了几个小时。不一致。
当我使用sbt发布任务时,会附加scala版本和sbt版本,我可以自定义它以摆脱它吗?
这完全不相关,build.sbt 和 plugins.sbt 中的解析器是相同还是不同。我问的原因是当我尝试重新加载时,plugins.sbt 中的解析器已验证,而 sbt 更新时,build.sbt 中的解析器已验证
感谢任何答案或解决方案。 :)
【问题讨论】: