2016-12-22 5 views
0

Почему, когда я делаю sbt compile не печатает Hello?SBT зависит от AutoPlugin

// build.sbt 
enablePlugins(Hello) 
// project/Hello.scala 
import sbt._ 
import sbt.Keys._ 

object Hello extends AutoPlugin { 

    object autoImport extends AnyRef { 
    lazy val hello = taskKey[Unit]("Says hello") 
    } 
    import autoImport._ 

    override val projectSettings = Seq(
    hello := { 
     streams.value.log.info("Hello") 
    }, 
    compile in Compile := (compile in Compile).dependsOn(hello).value 
) 

Приветствия

+0

Это поведение я бы ожидать, так как вы добавили зависимость от '' hello' от compile'. Есть ли способ, которым вы могли бы прояснить свой вопрос? – jkinkead

+0

Я 'compile' зависит от' hello'. Поэтому 'compile' должен запускать' hello', поскольку это зависит от него. Также, если я действительно добавляю 'Hello.projectSettings' явно в' build.sbt', это сработает. – Joan

+0

Извините, я только что увидел, что написал «делает» вместо «не», – Joan

ответ

0

Вот ответ от https://stackoverflow.com/users/463761/dale-wijnand:

Проблема заключается в том, что вы определяете компилировать в Compile, который затем получает перезаписан JvmPlugin.
Чтобы сделать то, что вы хотите, вы должны сделать ваши автозагрузку требуют JvmPlugin:

object Hello extends AutoPlugin { 
    override def requires = plugins.JvmPlugin 

    // etc 
} 
Смежные вопросы