Pierre Dal-Pra / @pierre_dalpra / pdalpra Paris Scala User Group, 17/09/2015
object MyPlugin extends Plugin {
val myKey = settingKey[String]("my key")
lazy val mySettings = Seq(
myKey := "the value"
)
}
// project/plugins.sbt
addSbtPlugin("mygroupId" % "myplugin" % "1.0") // ~ libraryDependencies
// Dans le build
mySettings
Comment ça marche ? Import automatiquement ajouté :
import MyPlugin._
Pas idéal pour les utilisateurs du plugin
> plugins In file:/Users/pierredalpra/Work/Teads/tools/service-platform-apps/ sbt.plugins.IvyPlugin: enabled in ... // <= Activé sbt.plugins.JvmPlugin: enabled in ... sbt.plugins.CorePlugin: enabled in ... sbt.plugins.JUnitXmlReportPlugin: enabled in ... tv.teads.build.MavenPublishPlugin // <= Pas activé
object MyPlugin extends AutoPlugin {
object autoImport {
val myKey = settingKey[String]("my key")
}
override def projectSettings = Seq(
myKey := "the value"
)
}
Si:
object MyPlugin extends AutoPlugin {
def requires = BasePlugin
def trigger = allRequirements
}
enablePlugin(BasePlugin) active aussi MyPlugin
Si:
object MyPlugin extends AutoPlugin {
def requires = BasePlugin
def trigger = noTrigger // défaut
}
enablePlugin(MyPlugin) active aussi BasePlugin
def trigger = allRequirements
seul suffit à activer le plugin par défaut dans un build
// => build .scala : import myOrg.myPlugin.MyPlugin.autoImport._ -> NOPE
object MyPlugin extends AutoPlugin {
object autoImport {
val myKey = ...
}
}
object MyKeys {
val myKey = ...
}
// => build .scala : import myOrg.myPlugin.MyKeys._ -> YEP
object MyPlugin extends AutoPlugin {
val autoImport = MyKeys
}
Respectivement, les configurations et settings/tasks qui seront automatiquement ajoutés au build une fois le plugin «activé».
Cette capacité à activer automatiquement des plugins ajoute de nouveaux use cases !