परीक्षण के बिना ग्रेड का निर्माण


635

मैं gradle buildयूनिट परीक्षणों को निष्पादित किए बिना निष्पादित करना चाहता हूं । मैंने कोशिश की:

$ gradle -Dskip.tests build

यह कुछ भी करने के लिए प्रतीत नहीं होता है। क्या कोई अन्य कमांड है जिसका मैं उपयोग कर सकता हूं?



क्या आप जावा का उपयोग कर रहे हैं ??
नागा

2
-DskipTestsमावेन के लिए है
गायन वीरकुट्टी

जवाबों:


1239

आपको -xकमांड लाइन तर्क का उपयोग करना चाहिए जो किसी भी कार्य को बाहर करता है।

प्रयत्न:

gradle build -x test 

अपडेट करें:

पीटर की टिप्पणी में लिंक बदल गया। यहाँ ग्रेड उपयोगकर्ता के गाइड से आरेख है


45
यह सही जवाब है। 'असेंबल असेंबल' कई अन्य कार्यों को भी छोड़ देगा। एक विचार प्राप्त करने के लिए इस आरेख को देखें । ठेठ वास्तविक जीवन के लिए, 'ग्रेड असेंबल' और भी अधिक कार्यों को छोड़ देगा।
पीटर निडरविशर

13
@PeterNiederwieser से लिंक अब मान्य नहीं है। संभवतः वह इस आरेख का उल्लेख कर रहा था: gradle.org/docs/current/userguide/img/javaPluginTasks.png
डेव एल।

9
काम करता है हालांकि आप जैसे -x integTestऔर इतने पर जोड़ने की आवश्यकता हो सकती है , इसलिए मावेन कंबल के रूप में सुविधाजनक नहीं है -DskipTests
जेसी ग्लिक

1
@c_maker, ग्रहण से यह कैसे करें?
रिनुथोमाज़

क्या कक्षा फ़ाइल को निष्पादित करना संभव है? मेरा मतलब है, runमैं अपने हैलो कार्यक्रम के प्रभाव को देख सकता हूं। लेकिन मुझे लगता है कि यह सब कुछ फिर से संकलित कर रहा है। मैं केवल जावा प्रोग्राम निष्पादित करना चाहता हूं।
सिगुर

107

प्रयत्न:

gradle assemble

अपने प्रोजेक्ट के सभी उपलब्ध कार्यों को सूचीबद्ध करने के लिए, प्रयास करें:

gradle tasks

अपडेट करें:

यह पहली बार में सबसे सही उत्तर नहीं लग सकता है, लेकिन gradle tasksआउटपुट या डॉक्स को ध्यान से पढ़ें ।

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

8
यदि आप अपने यूनिट परीक्षणों को डिबग कर रहे हैं तो अतिरिक्त संकेत के रूप में: gradle assembleमुख्य फ़ाइलों को संकलित नहीं करेंगे। यदि आप अपने यूनिट टेस्ट को ठीक करने में काम करते हैं, तो आपको जरूरत है gradle assemble testClasses- मुझे लगता है कि निर्माण कार्य का नामकरण काफी भ्रामक है।
मार्टिन

36

स्वीकृत उत्तर सही है।

ओटोह, जिस तरह से मैंने पहले इसे हल किया था, वह सभी परियोजनाओं में निम्नलिखित को जोड़ने के लिए था:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

निर्माण के साथ चलाएं -Dskip.tests=trueऔर सभी परीक्षण कार्यों को छोड़ दिया जाएगा।


3
मेरे लिए यह अभी भी केवल काम करने का विकल्प है क्योंकि -x परीक्षण केवल शुरुआती परियोजना पर काम करने के लिए लगता है, लेकिन मल्टी प्रोजेक्ट बिल्ड (निर्भरता 2.1 पर परीक्षण) में निर्भरता के लिए नहीं। अपने रूट बिल्ड बिल्ड.ग्रेड में {} ब्लॉक (। It.name) को कॉन्फ़िगर करें (subprojects.findAll {javaProjects.contains (it.name)}) में test.onlyif ... डालें। यह सभी प्रोजेक्ट्स के लिए काम करेगा।
टाइमम

अच्छा था। यह तरीका मावेन उपयोगकर्ताओं के लिए जाना जाता है।
13

23

आप सभी परीक्षणों को छोड़कर build.gradle, निम्नलिखित पंक्तियों को जोड़ सकते हैं **/*

test {
    exclude '**/*'
}

2
यह सबसे अच्छा जवाब है IMHO
मार्को सुल

1
धन्यवाद! आपका उत्तर सहायक था।
JAY PATEL


4

संदर्भ

किसी भी कार्य को ग्रेडेल उपयोग -xकमांड-लाइन विकल्प से बाहर करने के लिए । नीचे दिए गए उदाहरण देखें

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

का आउटपुट: gradle -q dist -x runningTest

task compile
compile test
running distribution job

आशा है कि यह आपको मूल देगा


कृपया पृष्ठ का स्क्रीन शॉट भेजें। मुझे नहीं पता कि इस कोड को कहां रखा जाए ....
होसेन मंसूरी

कोड का यह टुकड़ा आपके build.gradle में जाना चाहिए :)
माधवन पिल्लई

2

परियोजना में परीक्षण कार्यों को निष्क्रिय करने का अलग तरीका है:

tasks.withType(Test) {enabled = false}

यदि आप किसी प्रोजेक्ट (या प्रोजेक्ट्स के समूह) में से किसी एक में परीक्षण अक्षम करना चाहते हैं, तो कभी-कभी इस व्यवहार की आवश्यकता होती है।

इस तरह सभी प्रकार के परीक्षण कार्य के लिए काम करना, न कि केवल एक जावा 'परीक्षण'। साथ ही, यह तरीका सुरक्षित है। यहां मेरा मतलब है आइए बताते हैं: आपके पास विभिन्न भाषाओं में परियोजनाओं का एक सेट है: यदि हम इस तरह के रिकॉर्ड को मुख्य रूप से जोड़ने की कोशिश करते हैं build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

हम एक परियोजना में असफल हो जाएंगे जब हमारे पास परीक्षण नामक कोई कार्य नहीं होगा


2

-x testस्किप टेस्ट निष्पादन का उपयोग करना लेकिन यह टेस्ट कोड संकलन को भी बाहर करता है।

gradle build -x test 

हमारे मामले में, हमारे पास एक सीआई / सीडी प्रक्रिया है जहां एक लक्ष्य संकलन है और अगला लक्ष्य परीक्षण (बिल्ड -> टेस्ट) है।

इसलिए, अपने पहले Buildलक्ष्य के लिए हम यह सुनिश्चित करना चाहते थे कि पूरी परियोजना अच्छी तरह से संकलित हो। इसके लिए हमने उपयोग किया है:

./gradlew build testClasses -x test

अगले लक्ष्य पर हम बस परीक्षण निष्पादित करते हैं।


0
gradle build -x test --parallel

यदि आपकी मशीन में कई कोर हैं। हालांकि, समानांतर स्वच्छ का उपयोग करने की अनुशंसा नहीं की जाती है।


0

कृपया इसे आज़माएँ:

gradlew -DskipTests=true build


6
@ कृष्णकुमार दफड़ा - नहीं। आप जब चाहें तब उत्तर पोस्ट कर सकते हैं, भले ही कोई मौजूदा उत्तर स्वीकार कर लिया गया हो। नया उत्तर स्वीकृत उत्तर की तुलना में बेहतर हो सकता है, या इसे अलग तरीके से हल कर सकता है, या अन्यथा दूसरों की मदद कर सकता है। समीक्षा से
वाई हा ली

@WaiHaLee मैं अपनी टिप्पणी संपादित करने में सक्षम नहीं हो सकता, लेकिन जैसा कि मुझे नए उपयोगकर्ताओं के लिए सुझाव मिले, मैं यह समझाना चाहता था कि अधिक स्पष्टीकरण के साथ उत्तर जोड़ने का प्रयास करें ताकि अन्य उपयोगकर्ता यह देख सकें कि यह उत्तर या कोड उनके लिए उपयोगी क्यों है।
किरणकुमार दफड़ा

0

में जावा प्लगइन :

$ gradle tasks

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.

Verification tasks
------------------
test - Runs the unit tests.

परीक्षण के बिना निर्माण दो विकल्प आपके पास हैं:

$ gradle assemble
$ gradle build -x test

लेकिन अगर आप संकलन परीक्षण चाहते हैं:

$ gradle assemble testClasses
$ gradle testClasses
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.