2017-05-18 34 views
1

请查看下面使用我们插件的build.sbt示例文件。 在此示例BasePlugin,我们要完整路径/工程,B /项目目录: -访问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) 

此外,在下面找到,简化SBT插件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) } 
    } 
) 
} 

如何访问sbt插件中的依赖项目。

+1

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

+0

我想你不小心忘了包括你的问题 – Martijn

+0

@Micro:请在回答部分添加您的评论,以便接受它:) – mogli

回答

0

拿到项目的依赖关系做

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

这将如预期如果您在projectSettings方法的进入体内thisProject