2017-09-26 46 views
0

我写autoPlugin像这样SBT不启用

object ThriftIfaceSbt extends AutoPlugin { 

    override def projectSettings = { 
    Seq(
     crossVersion := { 
     println(s"Init ThriftIfaceSbt ${name.value}") 
     CrossVersion.Disabled 
     }, 
     autoScalaLibrary := false, 
     resourceDirectories in Compile += baseDirectory.value/"src"/"main"/"thrift" 
    ) 
    } 

} 

然后我publishLocal一些自定义插件,并尝试在我build.sbt

lazy val myProject = (project in file("a")).enablePlugins(ThriftIfaceSbt) 

这插件不应用去项目..我不明白为什么。

它可能SBT默默地忽略我的插件?

回答

1

一个可能的原因是它不起作用,因为你重写了由sbt JvmPlugin提供的设置,但是你不声明它的依赖关系,所以它们的应用顺序是未定义的。如果您的插件首先被应用,那么JvmPlugin设置将覆盖您的插件配置的任何内容。

您需要添加:

override def requires = sbt.plugins.JvmPlugin 

到您的插件。即使这不能解决你的问题,你仍然需要补充。

+0

哇,你说的对,那个技巧很有效,谢谢=) –