2011-11-11 11 views
8

私のプロジェクトでは依然としてsbt 0.7.7が使用されており、sbtプロンプトから実行できるユーティリティクラスを持つことが非常に便利です。私はこれを、ホストからホストに変わる環境関連の値のために、別々に管理されているプロパティと組み合わせることもできます。これはproject/buildディレクトリの下に私のプロジェクトの定義の例です:sbt 0.11タスクの例が必要です

class MyProject(info: ProjectInfo) extends DefaultProject(info) { 
    //... 
    lazy val extraProps = new BasicEnvironment { 
    // use the project's Logger for any properties-related logging 
    def log = MyProject.this.log 
    def envBackingPath = path("paths.properties") 
    // define some properties that will go in paths.properties 
    lazy val inputFile = property[String] 
    } 

    lazy val myTask = task { args => 
    runTask(Some("foo.bar.MyTask"), 
     runClasspath, extraProps.inputFile.value :: args.toList).dependsOn(compile) 
     describedAs "my-task [options]" 
    } 
} 

私は、その後のsbtシェルの下my-task option1 option2としての私のタスクを使用することができます。

私はTasksTaskInputs上のセクションを含むhttps://github.com/harrah/xsbt/wikiで新しいSBT 0.11ドキュメントを読んできたし、率直に言って、私はまだ私は0.7.7に何をしたか実現する方法に苦労しています。

余分なプロパティは別のenvironment.sbtに置き換えることができます。そのタスクは、build.sbtに設定する前にproject/build.scalaに定義する必要があります。非常に興味深い完成サポートがあるようにも見えます。

それを超えると、私はいくぶん圧倒されます。私は新しいsbtで何をしたのですか?

+0

私は助けたいのですが、私は、SBT 0.7.7についての詳細は覚えていません。私はこの質問がsbt 0.11に関する複数の自己完結型の質問に分割できるのだろうか? –

+0

@KiptonBarros、確かに、基本的な 'runTask'から始めて、sbtシェルで引数を提供することができます。 – huynhjl

+0

sbtのドキュメントが現在改訂されているようです。私は、[Input Tasks](https://github.com/harrah/xsbt/wiki/Input-Tasks)wikiページの「Basic Input Task Definition」セクションがあなたが探しているものだと思います。 –

答えて

3

あなたはこのようなタスクを定義することができます

lazy val ExtraProps = config("extra-props") extend(Compile) 

にこの設定を追加します。あなたはまた、のような新しいコンフィギュレーションを定義することができ

val inputFile = SettingKey[String]("input-file", "input file description") 

val myTask = InputKey[Unit]("my-task") 

そして、あなたの設定をあなたのプロジェクトを開き、それを使ってこの設定の設定を行います:

lazy val root = Project("root", file(".")).config(ExtraProps).settings(
    inputFile in ExtraProps := ... 
    ... 
    myTask in ExtraPops <<= inputTask { (argTask:TaskKey[Seq[String]]) => 
    (argTask, inputFile) map { (args:Seq[String], iFile[String]) => 
     ... 
    } 
    } 
).dependsOn(compile) 

その後、余分な小道具を使ってタスクを起動:私のタスクを

関連する問題