मावेन - परीक्षण कक्षाओं का निर्माण छोड़ें


80

क्या परीक्षण कक्षाओं का निर्माण नहीं करने का एक सरल तरीका है?

mvn clean install -Dmaven.test.skip=true

3
संकलन को छोड़ें या निष्पादन को छोड़ें?
Bozho

मुझे परीक्षण कक्षाओं को संकलित किए बिना जेटी चलाने की आवश्यकता है।

जवाबों:


134

Maven Surefire Plugin पर प्रलेखन के अनुसार , परीक्षणों के संकलन और निष्पादन दोनों -Dmaven.test.skip को छोड़ देना चाहिए । इसके विपरीत, -DskipTestsबस परीक्षण निष्पादन को रोक देता है : परीक्षण अभी भी संकलित हैं।


28
+1 हालांकि मुझे नामकरण से नफरत है। यह मेरे लिए पूरी तरह से गैर-स्पष्ट है कि क्यों skipTestsसिर्फ परीक्षणों को निष्पादित करने और परीक्षणों को संकलित करने और निष्पादित करने के लिए maven.text.skipस्किप करता है। मुझे हमेशा यह देखना होता है कि कौन सा है।
जोकिम सॉयर

18

बस स्पष्ट रूप से स्पष्ट होने के लिए:

skipTests में कुछ भी संकलन करेगा<testSourceDirectory> , लेकिन उन्हें निष्पादित नहीं करेगा

maven.test.skipहोगा संकलन नहीं किसी भी परीक्षण, लेकिन निष्पादित करेंगे किसी भी संकलित परीक्षण है कि में अपना रास्ता बना लिया <testOutputDirectory>

अतः उपरोक्त 2 का व्यवहार विपरीत है। बस यह इंगित करना चाहता था कि maven.test.skipयदि परीक्षण फ़ाइलें अनपेक / कॉपी / आदि हैं, तो संकलन और निष्पादन को छोड़ें नहीं। में <testOutputDirectory>

इसके अलावा, अपने का उपयोग कर Maven का कौन सा संस्करण पर निर्भर करता है, वहाँ भी है maven.test.skip.exec=trueजो इसके साथ ही परीक्षा निष्पादन को छोड़ देता है skipTests के समान है।


3
यह दुर्भाग्य से सच नहीं है, कम से कम मावेन 3.0.5 और मावेन-कंपाइलर-प्लगइन 3.5.1 में। आप परीक्षण वाले प्रत्येक प्रोजेक्ट में इसका परीक्षण कर सकते हैं: परीक्षणों mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=trueको संकलित करेंगे (पहले पैकेज-निष्पादन के कारण) लेकिन उन्हें दूसरे आदेश में नहीं चलाएं। मानक निर्देशिकाओं को मानते हुए, target/test-classesबाद में सभी परीक्षण शामिल होंगे, लेकिन उन्हें निष्पादित नहीं किया गया है।
डेविड जॉर्ज रीचेल

यह सही उत्तर है और इसे इस तरह स्वीकार किया जाना चाहिए
आर्टेम


8

मैं मावेन का विशेषज्ञ नहीं हूं, लेकिन मैं अपनी वर्तमान परियोजना में क्या उपयोग करता हूं:

mvn clean install -DskipTests=true

आपके उपयोग के मामले पर निर्भर करता है:

mvn compile -DskipTests=true

आपके लिए भी काम कर सकता है।


0

मुझे एक और प्रश्न में एक काम के आस-पास मिला , जो वास्तव में आपके pom.xml में निम्नलिखित स्निपेट को डिफ़ॉल्ट रूप से जोड़कर एक प्लगइन निष्पादन को ओवरराइड करता है:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <executions>
        <execution>
          <id>default-testCompile</id>
          <phase>none</phase>
        </execution>
      </executions>
   </plugin>
  </plugins>
</build>

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

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