2013-03-20 13 views
7

हाय मैंGradle 'निर्माण' कार्य भ्रम

-root_project 
|-sub_project1 
|-sub_project2 
|-sub_project3 

सभी महान काम करता है लेकिन एक बात मुझे पागल ड्राइव बहु परियोजना Gradle सेटअप। अपने निर्माण स्क्रिप्ट में:

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' < से कहते हैं - डिफ़ॉल्ट कार्य निष्पादित हो जाता है

जब मैं कमांड लाइन से 'gradlew कार्यों' < कहते हैं - से runnable 'के तहत सभी कार्य कार्य जड़ परियोजना 'मैं देख' '

लेकिन जब मैं dependsOn जोड़ने की कोशिश का निर्माण (' निर्माण '), dependsOn (': निर्माण ') या dependsOn (': जड़: निर्माण ') यह मेरे

बताता है

क्या गलत हो गया: कार्य 'कार्य' के लिए निष्पादन विफल रहा।

कार्य ': बिल्डरूम' की निर्भरताओं को निर्धारित नहीं कर सका।

'आधार' प्लगइन 'इकट्ठा', और 'स्वच्छ' कार्य लेकिन निर्माण नहीं कहते हैं ...

कोई सुझाव?

उत्तर

10

build कार्य java-base प्लगइन द्वारा घोषित किया गया है। ऐसा लगता है कि आपकी रूट प्रोजेक्ट java-base लागू नहीं करती है और इसलिए build कार्य नहीं है। यही कारण है कि dependsOn("build"), में build नामक किसी कार्य पर कार्य निर्भरता जोड़ता है, अंततः एक त्रुटि का कारण बनता है। defaultTasks कि में अलग है:

  • यह केवल कार्य नाम स्वीकार करता है (जबकि dependsOn भी कार्य रास्तों और Task वस्तुओं स्वीकार करता है)।
  • इसके कार्य नाम कार्यों के लिए हल हो जाते हैं जैसे कमांड लाइन पर कार्य नाम दर्ज किए गए थे। दूसरे शब्दों में, सभी परियोजनाओं को दिए गए नाम के साथ किसी कार्य के लिए खोजा जाता है, और मिलान कार्यों का सेट वापस कर दिया जाता है।
+2

धन्यवाद पीटर, अब यह जानकर कि detaultTasks ** सभी सबप्रोजेक्ट्स दिए गए नाम के साथ किसी कार्य के लिए खोजे जाते हैं, और मिलान कार्यों का सेट वापस आ जाता है। ** यह सब समझ में आता है। उत्तर के लिए धन्यवाद। –

+0

ठीक है, और कुछ अन्य कार्य इस 'जावा बिल्ड' को कैसे कॉल कर सकते हैं? –

संबंधित मुद्दे