2014-07-26 608 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

我不認爲範圍到'編譯'範圍是對的。 –