Sbt Plugin 添加依赖到 project/build.sbt
Posted
技术标签:
【中文标题】Sbt Plugin 添加依赖到 project/build.sbt【英文标题】:Sbt Plugin Add Dependency to project/build.sbt 【发布时间】:2014-09-18 07:47:58 【问题描述】:我有一个 sbt 插件,当启用它时,它会通过 scalac 选项添加一个 scalac 编译器插件。一切都很好。
但是,如果 scalac 编译器插件本身具有需要使用的依赖项,我无法使其工作。我试过了:
将依赖项添加到目标项目 libraryDependencies 将其指定为 sbt 插件本身的依赖项。我认为我需要做的是(它是一个自动插件):
override lazy val projectSettings = Seq(
...
projectsPluginsDependencies ++= Seq(
"com.typesafe" % "config" % "1.2.1" % Compile.name
)
...
)
如果 projectsPluginsDependencies 是有效的键。这可能吗?
(事实上,我什至不确定如何手动将依赖项添加到最终项目中。如果编译器插件需要依赖项 X,你如何满足呢?我尝试将其添加到 project/build.sbt 中不起作用)。
只是为了超级清楚-我不是在问如何添加 sbt-plugin 需要的依赖项。我在问如何添加编译器插件需要的依赖项,它本身是由 sbt-plugin 添加的。
【问题讨论】:
【参考方案1】:见Compiler Plugin Support。
autoCompilerPlugins := true
libraryDependencies +=
compilerPlugin("org.scala-lang.plugins" % "continuations" % scalaVersion.value)
scalacOptions += "-P:continuations:enable"
试试看这是否会引入传递依赖。
【讨论】:
这是给使用编译器插件的项目吗?我要做的是让用户使用我的 SBT 插件,然后自动处理编译器插件的内容。 这不起作用。我已经更新了我的 sbt 插件来做到这一点: overridelazy val projectSettings = Seq( autoCompilerPlugins := true, libraryDependencies ++= Seq( compilerPlugin(GroupId % (ArtifactId + "_" + scalaBinaryVersion.value) % Version % Compile.name ) )) 但没有运气。引起:java.lang.ClassNotFoundException: com.typesafe.config.ConfigFactory 如果你删除 compilerPlugin() 和 autoCompilerPlugins:=true 这个问题解决了吗?在***.com/questions/34253338/… 的另一个雄心勃勃的场景中,我遇到了同样的高难度以上是关于Sbt Plugin 添加依赖到 project/build.sbt的主要内容,如果未能解决你的问题,请参考以下文章
使用 SBT - Native Packager Plugin 添加工件以播放项目
如何通过将 sbt-plugin 用作多项目构建中的依赖项来访问它的子项目?
无法使用 sbt 0.13 上传到 sonatype 且 xsbt-gpg-plugin 未解决依赖项:com.jsuereth#xsbt-gpg-plugin;0.6