2014-07-26 611 views
2

我有一个sbt插件,启用时通过scalac选项添加一个scalac编译器插件。一切都很好。Sbt插件添加依赖项目/ build.sbt

但是,如果scalac编译器插件本身具有需要使用的依赖关系,那么我无法使其工作。我已经试过:

  • 将依赖于目标项目libraryDependencies
  • 指定其作为SBT-插件本身的依赖。

我想我需要做的是一样的东西(它的自动插件):

override lazy val projectSettings = Seq(
    ... 
    projectsPluginsDependencies ++= Seq(
    "com.typesafe" % "config" % "1.2.1" % Compile.name 
) 
    ... 
) 

如果projectsPluginsDependencies是一个有效的密钥。这可能吗?如果一个编译器插件需要依赖关系X,你如何满足这个要求?我已经尝试将它添加到project/build.sbt中,并且将它添加到project/build.sbt中这不起作用)。

只是要超级清晰 - 我不问如何添加一个sbt-plugin需要的依赖项。我在问如何添加一个编译器插件需要的依赖项,它本身是由sbt-plugin添加的。

回答

0

请参阅Compiler Plugin Support

autoCompilerPlugins := true 

libraryDependencies += 
    compilerPlugin("org.scala-lang.plugins" % "continuations" % scalaVersion.value) 

scalacOptions += "-P:continuations:enable" 

试试看看是否会导致传递依赖。

+0

这是用于使用编译器插件的项目吗?我想要做的是让用户使用我的SBT插件,然后编译器插件的东西会自动处理。 – monkjack

+0

这不起作用。我已经更新了我SBT插件来做到这一点: 覆盖懒VAL projectSettings = SEQ( autoCompilerPlugins:= TRUE, libraryDependencies ++ = SEQ( compilerPlugin(的GroupId%(artifactId的+ “_” + scalaBinaryVersion.value)%版本%编译名称) )) 但没有运气。导致:java.lang.ClassNotFoundException:com.typesafe.config.ConfigFactory 这与我得到的相同,如果你删除compilerPlugin()和autoCompilerPlugins:= true – monkjack

+0

我不认为范围到'编译'范围是对的。 –