मावेन पैकेज / परीक्षण के बिना स्थापित करें (परीक्षण छोड़ें)


343

मैं अपने प्रोजेक्ट को पैकेज देने की कोशिश कर रहा हूं। लेकिन, यह स्वचालित रूप से पिछले प्रदर्शन पैकेजिंग चलाता है। परीक्षण डेटाबेस में कुछ सामग्री सम्मिलित करते हैं। यह वह नहीं है जो मैं चाहता हूं, मुझे एप्लिकेशन को पैकेज करते समय परीक्षण से बचने की आवश्यकता है। किसी को पता है कि पैकेज को टेस्ट से कैसे चलाना है?


13
एक यूनिट-टेस्ट में निम्नलिखित 4 चरण शामिल होने चाहिए: इनिशियलाइज़ेशन, टेस्ट, वेरिफिकेशन और टियरडाउन। हो सकता है कि आपको अपने परीक्षणों को समायोजित करना चाहिए और अपने डेटाबेस के अनुसार एक फाड़ / सफाई को जोड़ना चाहिए या अपने परीक्षणों को चलाने के लिए आपको अपने जार फ़ाइल के साथ पैक नहीं किया गया एक अलग डेटाबेस उदाहरण का उपयोग करना चाहिए।
मार्क-क्रिस्चियन शुल्ज

ऐसा लगता है कि आपके परीक्षण "भारी" हैं, इसलिए आप उन्हें निष्पादित नहीं करना चाहते हैं। लेकिन यह एक बुरा अभ्यास है। शायद DBUnit के रूप में कुछ चौखटे आपकी मदद कर सकते हैं? या आप परीक्षण के अंत में डेटाबेस परिवर्तन वापस कर सकते हैं?
मिकेल मार्राचे

जवाबों:


575

के साथ मावेन चलाएं

mvn package -Dmaven.test.skip=true 

1
तत्काल उत्तर के लिए धन्यवाद, मैं ग्रहण से चल रहा हूं, जहां मैं कमांड जोड़ता हूं -Dmaven.test.skip = true?
vks

10
मैंने कभी भी ग्रहण से mvn लॉन्च नहीं किया है, लेकिन रन कॉन्फ़िगरेशन विंडो में जहां आप मावेन के लक्ष्यों और प्रोफाइल को कॉन्फ़िगर करते हैं, वहां एक 'स्किप टेस्ट' चेकबॉक्स है। शायद यही चाल चलेगा।
जियोगोस डिम्टास

9
प्रलेखन के अनुसार जो संकलन को निष्पादन के रूप में छोड़ देगा। आप केवल निष्पादन को छोड़ने के लिए -DskipTests का उपयोग कर सकते हैं। यह पोस्ट इस बारे में कुछ चेतावनी भी देती है कि आप प्रत्येक झंडे के साथ किन संस्करणों का उपयोग कर सकते हैं
जॉनी राए

1
बहुत बहुत धन्यवाद, मैं इसे इस्तेमाल कर रहा था, -DskipTestsलेकिन यह अब काम नहीं करता है, किसी भी विचार क्यों?
सैम

7
ध्यान दें कि Maven Surefire Plugin और Maven Failsafe Plugin प्रलेखन से पता चलता है कि सेटिंग skipTestsको प्राथमिकता दी जाती है maven.test.skip
फ़िलिप बर्टेक

172

बस नीचे दिए गए आदेश प्रदान करें जो परीक्षण मामलों को निष्पादित करने की उपेक्षा करेंगे,

mvn package -DskipTests

4
मेरे लिए यह काम नहीं करेगा। मुझे इसके बजाय स्वीकृत समाधान का उपयोग करना पड़ा
सेबस

1
-DskipTestsजब मैंने इस्तेमाल किया तो मेरे लिए काम नहीं कियाmvn clean install -DskipTests
विश्रांत

1
इसका आंशिक रूप से ठीक होने के कारण यह परीक्षण को अंजाम नहीं देगा लेकिन यह परीक्षण कक्षाओं में प्रवेश करेगा .....
एंटोनियोसे

अनुयायियों के लिए, stackoverflow.com/a/21933970/32453-DskipTests के समान है और हाँ यह परीक्षणों को संकलित करता है और उन्हें नहीं चलाता है (जबकि उन्हें संकलित नहीं करता है)-Dmaven.test.skip.exec=true -Dmaven.test.skip=true
rogerdpack

47

यदि आप कमांड लाइन arg को सेट नहीं करना चाहते हैं तो आप इस प्लगइन कॉन्फ़िगरेशन को अपने pom में जोड़ सकते हैं:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
अब आप इस कॉन्फ़िगरेशन के साथ कमांड लाइन से परीक्षण नहीं चला सकते हैं।
इमैनुएल बॉबर्ग

1
@EmmanuelBourg कि इस उदाहरण maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d


41

ध्यान दें कि -Dmaven.test.skip Maven को टेस्ट-जार आर्टवर्क बनाने से रोकता है।

यदि आप परीक्षण छोड़ना चाहते हैं, लेकिन एक सामान्य बिल्ड उपयोग के अनुसार कलाकृतियां बनाएं:

-Dmaven.test.skip.exec

1
इस asnwer मैं देख रहा था, ठीक काम करता है। धन्यवाद।
बिनीता भारती

मैं कैसे याद करने वाला हूं? क्यों "SkipTests" की तरह एक सरल स्पष्ट और यादगार उपनाम नहीं बनाते हैं?
TheRealChx101

32

यदि आप Windows Powershell में यह कोशिश कर रहे हैं, तो आपको यह त्रुटि मिलेगी:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

इसका कारण है, पॉवर्सशेल में " -" का विशेष अर्थ है और यह मावेन के साथ समस्या पैदा कर रहा है।

समाधान यह है कि इसे बैकटिक (`) के साथ प्रीपेंड किया जाए, जैसे कि ।।

mvn `-Dmaven.test.skip=true install 

संदर्भ: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
मेरे पास एक ही मुद्दा था और इसने मेरे लिए इसे हल किया। धन्यवाद।
nsof


18

आप maven.test.skipध्वज को JVM तर्क के रूप में पास कर सकते हैं , जब पैकेज चरण (और डिफ़ॉल्ट जीवनचक्र में पिछले वाले) चलाए जा रहे परीक्षणों को छोड़ दें:

mvn package -Dmaven.test.skip=true

आप skipTestsअकेले फ्लैगशिप को भी mvan एक्जीक्यूटिव के पास भेज सकते हैं । आप अपने पोम में यह जानकारी शामिल करना चाहते हैं, तो आप एक नया प्रोफ़ाइल जहां कॉन्फ़िगर कर सकते हैं बना सकते हैं maven-surefire-pluginकरने के लिए परीक्षण को छोड़



13

Inllij IDEA में परीक्षण लक्ष्य को छोड़ने का एक विकल्प भी है।

यहां छवि विवरण दर्ज करें


11

यहां एक पुराने और स्वीकृत प्रश्न का उत्तर देना। आप इसे अपने pom.xml में जोड़ सकते हैं यदि आप हर समय कमांड लाइन तर्क से बचना चाहते हैं:

  <properties>
    <skipTests>true</skipTests>
  </properties>

11

आप -DskipTestsया तो या -Dmaven.test.skip=trueकिसी भी mvnकमांड को लंघन परीक्षणों के लिए जोड़ सकते हैं । आपके मामले में यह नीचे की तरह होगा:

mvn package -DskipTests

या

mvn package -Dmaven.test.skip=true


4

टेस्ट हमेशा पैकेज से पहले चलाने चाहिए। यदि आपको परीक्षण बंद करने की आवश्यकता है, तो आप कुछ गलत कर रहे हैं। दूसरे शब्दों में, आप गलत समस्या को हल करने का प्रयास कर रहे हैं। पता लगाएँ कि आपकी समस्या वास्तव में क्या है, और उस प्रश्न को पूछें। ऐसा लगता है कि यह डेटाबेस से संबंधित है।

[१] आप स्थानीय, विकास उपयोग के लिए जल्दी से एक कलाकृति तैयार करने की आवश्यकता होने पर परीक्षण छोड़ सकते हैं, लेकिन सामान्य तौर पर, एक कलाकृति का निर्माण हमेशा एक सफल परीक्षण रन का पालन करना चाहिए।


मुझे एक समान समस्या है: मेरे अनुप्रयोगों में वेबसोकेट है। जब मैं mvan क्लीन स्थापित करता हूं, तो मैं एक अंतहीन टेस्ट सीरीज़ में अंत करता हूं। इससे पहले कि मैं इसे बंद करता, यह प्रक्रिया 3 घंटे से चल रही थी और छपे हुए संदेश सिर्फ वेबसोकेट के बारे में थे। क्या आप कृपया देख सकते हैं कि मैं क्या गलत कर रहा हूँ? stackoverflow.com/questions/54614739/…
georgeB

नियम हमेशा अपवाद होते हैं। यदि आप ऐसा नहीं सोचते हैं, तो आप गलत हैं।
जय सुलिवन

3

मावेन बिल्ड और स्किप टेस्ट करने के लिए शॉर्टहैंड नोटेशन होगा:

mvan क्लीन इंस्टाल -DskipTests


2

मावेन टेस्ट को संक्रमित किए बिना मावेन पैकेज के लिए:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

धन्यवाद, मुझे आज इसकी बिल्कुल जरूरत थी।
सीन मैकमिलन

1

आप, जाहिर है, इसे गलत तरीके से कर रहे हैं। परीक्षण प्री-पैकेजिंग का एक महत्वपूर्ण हिस्सा है। आपको इसे अनदेखा या छोड़ना नहीं चाहिए, बल्कि इसे सही तरीके से करना चाहिए। डेटाबेस को बदलने की कोशिश करें जिसमें यह डेटा सम्मिलित करता है (जैसे test_db)। इसे सेट करने में थोड़ा समय लग सकता है। और यह सुनिश्चित करने के लिए कि इस डेटाबेस का उपयोग हमेशा के लिए किया जा सकता है, आपको परीक्षणों के अंत तक सभी डेटा को हटा देना चाहिए। JUnit4 में एनोटेशन हैं जो आपके लिए इसे आसान बनाते हैं। सही तरीकों के लिए @Before, @Aest @Test टिप्पणियों का उपयोग करें। आपको उस पर कुछ समय बिताने की ज़रूरत है, लेकिन यह इसके लायक होगा!


9
मुझे लगता है कि सवाल के साथ-साथ परीक्षण चलाने के बिना पैकेज की इच्छा पूरी तरह से वैध है। मुझे नहीं लगता कि ओपी "स्पष्ट रूप से इसे गलत तरीके से कर रहा है"। अलग-अलग लोगों और परियोजनाओं की अलग-अलग ज़रूरतें होती हैं, और ये आमतौर पर मावेन बाइबिल या विभिन्न लोगों की मान्यताओं (जैसे अपने आप) के साथ संरेखित नहीं होते हैं कि सॉफ्टवेयर विकास कैसे काम करना चाहिए। मुझे लगता है कि आपके जवाब को इसके कृपालु दृष्टिकोण के बिना अधिक सराहना मिलेगी।
जीरो 3

1

इंटेलीज में, व्यू -> टूल विंडोज -> मेवेन प्रोजेक्ट चुनें। Lifecyle ड्रॉपडाउन पर, पैकेज पर राइट-क्लिक करें -> Create 'your-project [पैकेज]' चुनें ...

यह मान दर्ज करें: package -Dmaven.test.skip=true -f pom.xmlकमांड लाइन फ़ील्ड में। लागू करें पर क्लिक करें और एक रन कॉन्फ़िगरेशन ड्रॉपडाउन मेनू आपके बनाए कस्टम मावेन कमांड के साथ दिखाई दे।


इसे क्यों अस्वीकृत किया गया? मैं इस हर मैं अपने प्रोजेक्ट लेकिन लंघन परीक्षण निर्माण करना चाहता था का उपयोग
पैट्रिक Tolentino



-1

इसे करने के लिए सबसे अच्छा और सबसे आसान तरीका है, "मावेन प्रोजेक्ट" में इंटेलीज आइडिया में, और सिर्फ टेस्ट बटन पर क्लिक न करें। मुझे उम्मीद है मैंने आपकी मदद की है। आपका दिन शुभ हो :)


1
यदि आप पैकेज पर क्लिक करते हैं, तो यह परीक्षण चलाता है, जो कि ओपी से बचने की कोशिश कर रहा है
चार्ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.