Maven परीक्षण छोड़ें


225

मैं मावेन 2.2.1 का उपयोग कर रहा हूं और अपनी परियोजना के निर्माण के लिए मैंने इस कमांड का उपयोग किया है

mvn clean install -Dmaven.test.skip=true

हालाँकि, बिल्ड यह कहकर विफल हो गया कि यह किसी एक कलाकृति को नहीं ढूंढ सकता है। हालाँकि, जब मैंने प्रयोग किया:

mvn clean install -DskipTests

सब कुछ ठीक रहा।

अब तक मैं सोच रहा था कि ये 2 कमांड बराबर हैं। हालाँकि, इस लिंक से लगता है कि सुझाव है-Dmaven.test.skip=true परीक्षण मामलों को संकलित करने में भी मदद करता है।

हालाँकि, यह अभी भी मुझे समझा नहीं है कि एक कमांड क्यों काम कर रहा है और दूसरा नहीं है। अगर कोई मुझे यह समझाता है तो कृपया आभारी होंगे।


1
आप किस संस्करण का उपयोग कर रहे हैं? क्या यह वही डॉक संस्करण है जो आप पढ़ रहे हैं?
जेरेटन

2
एक स्कीप बिल्डिंग, दूसरी स्कीप चल रही है। आप चाहें तो दोनों का उपयोग करें।
इलियट फ्रिस्क

1
क्या आप विफलता का विवरण प्रदान कर सकते हैं - त्रुटि संदेश या स्टैकट्रेस?
रघुराम

1
आप ऐसे पुराने मैवेन संस्करण का उपयोग क्यों कर रहे हैं जो पहले से ही ईओएल परिभाषित है
खमरबाइसे

1
तो क्या यह वास्तव में सच है कि पूरी तरह से सब कुछ परीक्षण से संबंधित है जो मुझे उपयोग करना है -Dmaven.test.skip=true -DskipTests? परिस्थितियों के आधार पर एक या दूसरे को कभी-कभी छोड़ा जा सकता है, लेकिन जो इस बारे में सोचना चाहता है ..
लैंडन कुह्न

जवाबों:


120

जैसा कि आपने उल्लेख किया है, -Dmaven.test.skip=trueपरीक्षणों को संकलित करने वाले स्किप। इस बिंदु पर अधिक, यह परीक्षण कलाकृतियों के निर्माण को रोक देता है। बड़ी परियोजनाओं के लिए एक आम बात यह है कि एक ही परियोजना में मॉड्यूल के बीच साझा किए गए उपयोगिताओं और बेस कक्षाओं का परीक्षण किया जाए।

यह एक मॉड्यूल के लिए test-jarपहले से निर्मित मॉड्यूल की आवश्यकता होती है :

<dependency>
  <groupId>org.myproject.mygroup</groupId>
  <artifactId>common</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

यदि -Dmaven.test.skip=true(या बस -Dmaven.test.skip) निर्दिष्ट है,test-jar एस बनाया नहीं गया है, और कोई भी मॉड्यूल जो उन पर निर्भर है, उसका निर्माण विफल हो जाएगा।

इसके विपरीत, जब आप उपयोग करते हैं -DskipTests, मावेन परीक्षण नहीं चलाता है, लेकिन यह उन्हें संकलित करता है और परीक्षण-जार का निर्माण करता है, जिससे यह बाद के मॉड्यूल के लिए उपलब्ध होता है।


2
इस समस्या को हल कैसे करें? मेरे ऑनलाइन मावेन कमांड के रूप में -Davaven.test.skip का उपयोग करें।
नेपच्यून

2
@ क्या समस्या है? यदि आपके पास कोई नया प्रश्न है, तो कृपया इसे पूछने के लिए एक नई पोस्ट का उपयोग करें।
मुरैनीक

58

पैकेज बनाने के लिए परीक्षणों में मेरी कुछ अंतर-निर्भरता थी।

लक्ष्य को पूरा करने के लिए निम्नलिखित आदेश परीक्षण विरूपण साक्ष्य की आवश्यकता को ओवरराइड करने का प्रबंधन करते हैं:

mvn -DskipTests=true  package

29

प्रत्येक पैरामीटर के बीच एक अंतर है।

  • -DskipTests चल रहे परीक्षण चरण को छोड़ देता है, इसका मतलब है कि इस प्रक्रिया के अंत में आपके पास अपने परीक्षण संकलित होंगे।

  • -Dmaven.test.skip = परीक्षण चरण संकलित करना और चलाना सही छोड़ें।

पैरामीटर के रूप में -Dmaven.test.skip = सच में संकलन करें कि आपके पास परीक्षण विरूपण साक्ष्य नहीं है।

अधिक जानकारी के लिए बस सर्फिंग प्रलेखन पढ़ें: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html


15

मैं आपको एक उदाहरण दे सकता हूं जिसका परिणाम एक ही समस्या है, लेकिन यह आपको आपके प्रश्न का उत्तर नहीं दे सकता है। (इसके अतिरिक्त, इस उदाहरण में, मैं अपने मावेन 3 ज्ञान का उपयोग कर रहा हूं, जो मावेन २ के लिए लागू नहीं हो सकता है।)

एक बहु मॉड्यूल maven परियोजना में (मॉड्यूल शामिल हैं Aऔर B, जहां Bपर निर्भर करता है A), तो आप भी एक जोड़ सकते हैं परीक्षण निर्भरता पर Aसे B

यह निर्भरता इस प्रकार लग सकती है:

<dependency>
     <groupId>com.foo</groupId>
     <artifactId>A</artifactId>
     <type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 2. -->
     <scope>test</scope>
</dependency>

(अधिक जानकारी के लिए देखें https://maven.apache.org/guides/mini/guide-attached-tests.html )
ध्यान दें कि परियोजना Aएक क्लासिफायरियर के साथ माध्यमिक विरूपण साक्ष्य उत्पन्न करती है testsजहां परीक्षण कक्षाएं और परीक्षण संसाधन स्थित हैं।

यदि आप अपनी परियोजना का निर्माण करते हैं -Dmaven.test.skip=true, तो आपको एक निर्भरता रिज़ॉल्यूशन त्रुटि मिलेगी, जब तक कि आपके स्थानीय रेपो या बाहरी सूचना विज्ञान में परीक्षण विरूपण साक्ष्य नहीं मिला था। कारण यह है कि परीक्षण कक्षाओं को न तो संकलित testsकिया गया था और न ही कलाकृतियों का उत्पादन किया गया था।
हालाँकि, यदि आप अपने निर्माण को -DskipTestsअपनी testsकलाकृतियों से चलाते हैं, तो उत्पादन किया जाएगा (हालाँकि परीक्षण नहीं चलेंगे) और निर्भरता हल हो जाएगी।


10

मावेन क्लीन इंस्टाल के दौरान परीक्षण के मामले को छोड़ने के लिए मैंने निम्नलिखित कमांड में -DskipTests paramater का उपयोग किया

mvn clean install -DskipTests

टर्मिनल विंडो में


9

पैरामीटर -DskipTests आपके अचूक-प्लगइन संस्करण के आधार पर काम नहीं कर सकता है।

आप "-DskipTests" के बजाय "-Davaven.test.skip.exec" का उपयोग कर सकते हैं

स्रोत: अचूक पैरामीटर विवरण


1

मावेन संकलन के दौरान आप pom.xml में निम्न प्लगइन जोड़कर परीक्षण निष्पादन को छोड़ सकते हैं

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

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