2015-02-02 7 views
5


से एक विशिष्ट subproject को बाहर हमारे Gradle परियोजना में, हम चाहते हैं कि अन्य उप से निर्भरता उपयोग करने में सक्षम होने की जरूरत है, लेकिन अभी भी पूर्ण के भाग के रूप में नहीं चलाया जा कार्यात्मक परीक्षण के लिए एक नया मॉड्यूल जोड़ना चाहते हैं परियोजना निर्माण यदि मैं यह कोशिश, यह अभी भी बनाया जाता है:Gradle पूर्ण निर्माण

def javaProjects() { 
    return subprojects.findAll { it.name != 'functional-tests' } 
} 

configure(javaProjects()) { 
    ... 
} 

project(':functional-tests') { 
    .... 
} 

परिणाम एक ही है, भले ही मैं कार्यात्मक परीक्षण का अपना एक अलग build.gradle फाइल करने के लिए निर्माण के लिए कदम। क्या कोई यह बता सकता है कि इसे कैसे प्राप्त किया जाए?

उत्तर

11

मुझे कमांड लाइन पर या बिल्ड फ़ाइल के माध्यम से कार्यात्मक परीक्षणों को बाहर करने के लिए एक बेहतर समाधान मिला।

उदाहरण के लिए, कार्यात्मक परीक्षण को छोड़कर सभी परीक्षण चलाने के लिए, चलाएँ:

$ gradle check -x :functional-tests:check 

फिर जब परियोजना का निर्माण, आप subproject निर्माण करते हैं लेकिन चलने से उनके परीक्षण बाहर कर सकते हैं।

$ gradle clean assemble -x :functional-tests:check 

एक बेहतर विकल्प आपकी बिल्ड फ़ाइल में कार्यात्मक परीक्षण अक्षम नहीं करता है जब तक कि कोई प्रॉपर्टी सेट न हो जाए। उदाहरण के लिए, अपनी build.gradle आप जोड़ेंगे:

project('functional-tests') { 
    test { 
     onlyIf { 
      project.hasProperty("functionalTests") 
     } 
    } 
} 

इस तरह, कार्यात्मक परीक्षण हमेशा छोड़ दिया है, जब तक आप एक विशिष्ट निर्माण संपत्ति निर्दिष्ट करें:

$ gradle check 
$ gradle -PfunctionalTests check 

आशा है कि मदद करता है!

4

जहाँ तक मुझे पता के रूप में यह संभव नहीं है निष्क्रिय करने के लिए या यह बाद परियोजना को बाहर के रूप में किया गया शामिल settings.gradle में। इसलिए यह शायद settings.gradle में निम्नलिखित तरीके से किया:

include 'p1', 'p2', 'p3' 

if (any_condition_here) { 
    include 'functional-tests' 
} 

यह build.gradle में अतिरिक्त जांच की आवश्यकता होगी - परियोजना कॉन्फ़िगर करने के लिए अगर यह शामिल है।

मेरे सिर पर भी क्या आता है -a कमांड लाइन स्विच, here देखें। शायद यह किसी भी तरह से मददगार हो सकता है।

+0

हाय @ ओपल, मुझे लगता है कि पहला विकल्प मेरी आवश्यकताओं के लिए पर्याप्त होना चाहिए। हालांकि, हमारे ग्रैडल सीआई में हमेशा बनाता है बिना एक विकल्प के पूर्ण निर्माण चलाते हैं। तो मुझे लगता है कि एक विकल्प उस मामले के लिए काम नहीं करेगा। – Paddy

+0

@ ओपल: क्या आप build.gradle सहित एक पूर्ण उदाहरण प्रदान कर सकते हैं? – Nayan

+0

@ रफीकुनबी, कृपया अपनी समस्या का वर्णन करें। – Opal

2

आप subproject बाहर नहीं कर सकते, लेकिन आप subproject कार्यों निष्क्रिय कर सकते हैं:

gradle.taskGraph.whenReady { 
    gradle.taskGraph.allTasks.each { 
    if(it.project == project) { 
     it.onlyIf { false } 
    } 
    } 
} 
2

मैं इसे इस तरह कार्य करें:

//for all sub projects 
subprojects { 
    if (it.name != 'project name') { 
     //do something 
    } 
} 

इस तरह से, मैं में कुछ विशेष परियोजना बाहर कर सकते हैं subprojects

आप इसे allprojects या project में भी उपयोग कर सकते हैं।

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