2017-05-18 4 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) 

また、下記見つけ、BasePlugin.scalaプラグインに簡略化SBT: - どのように

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プラグインの依存プロジェクトにアクセスする。プロジェクトの依存関係が期待どおりprojectSettings方法の体内thisProjectにアクセスしている場合、これは動作します

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

を行う取得するには

+1

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

+0

あなたの質問を誤って忘れてしまったと思います。 – Martijn

+0

@Micro:回答セクションにあなたのコメントを追加してください: – mogli

答えて

0

関連する問題