2015-06-08 12 views
7

Sto scrivendo un plug-in di sbt per estrarre alcuni fogli di stampa che sono in uso con alcuni plug-in comuni che utilizzo. In questa ricerca, sto cercando di configurare one of the plugin se è impostato su requires impostato su noTrigger che richiede esplicitamente l'attivazione del plug-in nelle impostazioni del progetto.Abilita esplicitamente il plug-in SBT all'interno di un altro plug-in SBT

con SBT AutoPlugin di se ho impostato requires = BuildInfoPlugin e trigger = allRequirements quindi le impostazioni verranno caricamento automatico se abilitare esplicitamente il plugin di base, o se ho impostato richiede come sopra e trigger = noTrigger quindi aggiungendo esplicitamente il plugin su cui sto lavorando importerà base plugin pure.

/* Requires enablePlugins(BuildInfoPlugin) to be explicitly set on project, 
    then the settings in this plugin will automatically load. */ 
object BuildInformation extends AutoPlugin { 

    override def requires = BuildInfoPlugin 
    override def trigger = allRequirements 
} 

.

/* Requires enablePlugins(BuildInformation) to be explicitly set on project, 
    which will automatically import BuildInfoPlugin */ 
object BuildInformation extends AutoPlugin { 

    override def requires = BuildInfoPlugin 
} 

C'è un modo per avere il plugin derivata esplicitamente importare il plugin di base, senza richiedere il plugin derivato stesso da aggiungere in modo esplicito? (Ad esempio, il plug-in PlayScala di PlayFramework viene caricato in sbt-native-packager con il caricamento, ma è necessario che PlayScala sia abilitato esplicitamente)

Una cosa a cui stavo pensando è semplicemente l'estensione del plug-in di base e l'override del suo metodo di trigger per essere allRequirements, ma chiedevo se esiste un metodo più pulito/preferito.

risposta

0

Non più elegante rispetto derivare, ma forse più flessibile:

object DerivedPlugin extends AutoPlugin { 

    override def trigger: PluginTrigger = allRequirements 
    override def requires = JvmPlugin 

    val autoImport = BasePlugin.autoImport 

    override lazy val projectSettings = BasePlugin.projectSettings 

} 
Problemi correlati