consoleProject
タスクは、プロジェクト定義と sbt
にアクセスできる Scala インタプリタを起動します。具体的には、インタプリタはこれらのコマンドが既に実行された状態で起動されます。
import sbt._
import Keys._
import <your-project-definition>._
import currentState._
import extracted._
import cpHelpers._
たとえば、sbt のプロセスライブラリ(Scala 2.9 の標準ライブラリに含まれる予定)を使用して外部プロセスを実行します。
> "tar -zcvf project-src.tar.gz src" !
> "find project -name *.jar" !
> "cat build.sbt" #| "grep version" #> new File("sbt-version") !
> "grep -r null src" #|| "echo null-free" !
> uri("http://databinder.net/dispatch/About").toURL #> file("About.html") !
consoleProject
は、Scala インタプリタが通常コード 작성の探索に使用されるのと同じ方法で、ビルドの作成と変更に役立ちます。これはビルドへの生のアクセスを提供することに注意してください。たとえば、IO.delete
に渡すものについて考えてみてください。
特定の設定を取得するには、次の形式を使用します。
> val value = (<scope> / <key>).eval
> IO.delete( (Compile / classesDirectory).eval )
現在のコンパイルオプションを表示する
> (Compile / scalacOptions).eval foreach println
追加で設定されたリポジトリを表示する。
> resolvers.eval foreach println
タスク(とその依存関係)を評価するには、同じ形式を使用します。
> val value = (<scope> / <key>).eval
デフォルトを含むすべてのリポジトリを表示する。
> fullResolvers.eval foreach println
コンパイルとテストに使用されるクラスパスを表示する
> (Compile / fullClasspath).eval.files foreach println
> (Test / fullClasspath).eval.files foreach println
現在の ビルド状態 は currentState
として利用できます。currentState
の内容はデフォルトでインポートされ、修飾なしで使用できます。
ビルドで実行される残りのコマンドを表示する(; consoleProject ; clean ; compile
のように consoleProject
を呼び出すと、より興味深い)。
> remainingCommands
現在登録されているコマンドの数を表示する
> definedCommands.size