2017-05-18 3 views
1

Veuillez trouver ci-dessous un exemple de fichier build.sbt qui utilise notre plugin. Dans cet exemple BasePlugin, nous voulons chemin complet à un/projet, b/répertoire du projet: -accéder à des projets dépendants (pas enfants) dans le plugin sbt

import sbt._ 
import Keys._ 
import BasePlugin._ 


BasePlugin.settings 

lazy val root = Project("root", file(".")).dependsOn(
                ProjectRef(uri("../some/where/a"), "a"), 
                ProjectRef(uri("../some/where/b"), "b") 
               )  




enablePlugins(BasePlugin) 

En outre, trouver ci-dessous, plugin SBT simplifié BasePlugin.scala: -

package base 

import sbt.{ThisBuild, Def, TaskKey, AutoPlugin} 
import sbt._ 
import Keys._ 

/** 
* Created by mogli on 4/23/2017. 
*/ 
object BasePlugin extends AutoPlugin { 

    object autoImport { 
    lazy val customtask: TaskKey[Unit] = TaskKey("customtask") 
    } 

    import autoImport.customtask 


    override def projectSettings: Seq[Def.Setting[_]] = Seq(
    customtask := { 
     //expectation: to get an iterator or collection sort of thing for dependent projects, but they are not in this variable (projectDependencies) 
     val deps = projectDependencies 
     deps map { c => println("project : " + c) } 
    } 
) 
} 

Comment accéder aux projets dépendants dans le plugin sbt.

+1

val deps = thisProjet.value.dependencies.map {dep => dep.projet}? –

+0

Je pense que vous avez oublié par hasard d'inclure votre question – Martijn

+0

@Micro: Veuillez ajouter votre commentaire dans la section de réponse, de sorte que peut l'accepter :) – mogli

Répondre

0

Pour obtenir les dépendances du projet font

val deps = thisProject.value.dependencies.map { dep => dep.project }

Cela fonctionne comme prévu si vous accédez à thisProject dans le corps de la méthode projectSettings.