2012-12-11 15 views
7

タスク定義を別のものから継承することはできますか?私は何をしたいいくつかのテストプロファイルを作成しているので、私はデフォルトのテストを持っているだろう -Gradleタスク定義の継承

test { 

    include 'com/something/something/**' 
    exclude 'com/something/else/**' 

    maxParallelForks 5 

    testLogging{ 
     exceptionFormat "full" 
     showStackTraces = false 
    } 

    jvmArgs '-Xms128m', '-Xmx512m', '-XX:MaxPermSize=128m' 
} 

およびいくつかの他のテストオーバーライドなど「が含まれる」または「maxParallelForks」の部分で

はせず、それが可能です新しいタスククラスを作成しますか?あなたが一度にすべてのこれらのタスクを設定することができ

答えて

10

、彼らは次の構文を使用して、同じタイプのです提供:

tasks.withType(Test) { 
    include 'com/something/something/** 
    ... 
} 

これは、一度にタイプのすべてのタスク「テスト」を設定します。その後、設定を上書きすることができます。

すべてのタスクをセットアップしたくない場合や、それらのタスクのタイプが異なる場合は、次のスニペットのように列挙できます。

["test","anotherTestTask"].each { name -> 
    task "$name" { 
    include ... 
    } 
} 

あなたがGroovyのの完全なスクリプティング力を持っているので、ここで多くのオプションがありますが、覚えておいてください...

+1

おかげで、私はあなたの最初の構築物「tasks.withType(Testで行こうと思います)*。configure ... "を実行します。私はまだ興味がありますが、いくつかの継承ツリーを構築する方法がある場合 - いくつかのグローバルテスト定義を持つためにいくつかのtestSuite1グローバルテストを拡張し、次にいくつかのtestSuite2を拡張testSuite2、...私はいくつかの "ハック"これを達成することはできますが、私はまだDSLのサポートを見たいと思っています。 – mawek

+1

構文は 'tasks.withType(Test){...}'と 'task" $ t "{...}'に簡略化することができます。私たちは明示的な*設定ルール*は、すべての隠されたセマンティクスを持つ継承メカニズムよりも良いアプローチだと考えています。したがって、我々は1つを追加する計画はありません。 –

+0

簡略化のおかげでPeter :) –

関連する問題