2017-09-26 1 views
0

ich geschrieben habe autoPlugin wie soSbt ermöglicht es nicht, einige benutzerdefinierte Plugins

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" 
    ) 
    } 

} 

Dann i publishLocal und versuchen, es in meinem build.sbt

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

Das Plugin nicht angewendet Bekommt zu projizieren .. ich verstehe nicht warum.

Es ist möglich, dass SBT stillschweigend mein Plugin ignoriert?

Antwort

1

Ein wahrscheinlicher Grund dafür, dass es nicht funktioniert, ist, dass Sie die von der sbt JvmPlugin bereitgestellten Einstellungen außer Kraft setzen, aber keine Abhängigkeit davon deklarieren, daher ist die Reihenfolge, in der sie angewendet werden, undefiniert. Wenn Ihr Plugin zuerst angewendet wird, überschreiben die JvmPlugin Einstellungen, was auch immer Ihr Plugin konfiguriert hat.

Sie müssen hinzufügen:

override def requires = sbt.plugins.JvmPlugin 

zu Ihrem Plugin. Auch wenn das Problem dadurch nicht behoben wird, müssen Sie dies dennoch hinzufügen.

+0

Wow, du hast Recht, dieser Trick funktioniert, danke =) –

Verwandte Themen