2013-03-20 8 views
7

こんにちは私はGradleの「ビルド」タスク混乱

-root_project 
|-sub_project1 
|-sub_project2 
|-sub_project3 

すべてが素晴らしい作品が、1つの事は狂気私を駆動するマルチプロジェクトのGradleセットアップを持っています。私のビルドスクリプトで:

i「はgradlew」<コマンドラインから呼び出す
defaultTasks 'build' <- this works just fine 

task buildroom (description: 'This task is invoked by build room script, invokes default task plus publishes artifacts') { 
// dependsOn('build') <-- this doesn't work 

// alternative 
dependsOn(":sub_project1:build") 
dependsOn(":sub_project2:build") 

- タスクから実行可能なすべてのタスク」の下に - 私は、コマンドラインから呼び出すときにデフォルトタスクが「gradlewタスクの<

を実行されますルートプロジェクトのビルド」私は見 ''

を私はDEPENDSON追加しよう( 'ビルド')、DEPENDSON( ':ビルド')またはDEPENDSONを( ':ルート:ビルド')それは私

を伝えます

タスク ':tasks'の実行に失敗しました。

タスク 'buildroom'の依存関係を特定できませんでした。

'ベース' プラグインは、任意のヒント '組み立て'、および 'クリーン' タスクが、ビルドしていない...

追加されますか?

答えて

10

buildタスクはjava-baseプラグインで宣言されています。あなたのルートプロジェクトは(直接的または間接的に)java-baseを適用しないため、buildタスクを持たない可能性があります。このため、同じプロジェクトのにあるbuildという名前のタスクにタスク依存関係を追加するdependsOn("build")は、最終的にエラーの原因となります。 defaultTasksの点で相違する。

  • それだけ(dependsOnもタスクパスとTaskオブジェクトを受け入れる一方)タスク名を受け付けます。
  • タスク名は、タスク名がコマンドラインで入力されたかのようにタスクに解決されます。つまり、すべてのプロジェクトで指定された名前のタスクが検索され、一致するタスクが返されます。
+2

detaultTasks **に対して、すべてのサブプロジェクトで指定された名前のタスクが検索され、一致するタスクセットが返されたことに感謝しています。**すべて意味があります。答えてくれてありがとう。 –

+0

大丈夫です、そして、どのように他のタスクがこの 'java build'を呼び出すことができますか? –