क्या परीक्षण कक्षाओं का निर्माण नहीं करने का एक सरल तरीका है?
mvn clean install -Dmaven.test.skip=true
क्या परीक्षण कक्षाओं का निर्माण नहीं करने का एक सरल तरीका है?
mvn clean install -Dmaven.test.skip=true
जवाबों:
Maven Surefire Plugin पर प्रलेखन के अनुसार , परीक्षणों के संकलन और निष्पादन दोनों -Dmaven.test.skip को छोड़ देना चाहिए । इसके विपरीत, -DskipTestsबस परीक्षण निष्पादन को रोक देता है : परीक्षण अभी भी संकलित हैं।
skipTestsसिर्फ परीक्षणों को निष्पादित करने और परीक्षणों को संकलित करने और निष्पादित करने के लिए maven.text.skipस्किप करता है। मुझे हमेशा यह देखना होता है कि कौन सा है।
बस स्पष्ट रूप से स्पष्ट होने के लिए:
skipTests में कुछ भी संकलन करेगा<testSourceDirectory> , लेकिन उन्हें निष्पादित नहीं करेगा ।
maven.test.skipहोगा संकलन नहीं किसी भी परीक्षण, लेकिन निष्पादित करेंगे किसी भी संकलित परीक्षण है कि में अपना रास्ता बना लिया <testOutputDirectory>।
अतः उपरोक्त 2 का व्यवहार विपरीत है। बस यह इंगित करना चाहता था कि maven.test.skipयदि परीक्षण फ़ाइलें अनपेक / कॉपी / आदि हैं, तो संकलन और निष्पादन को छोड़ें नहीं। में <testOutputDirectory>।
इसके अलावा, अपने का उपयोग कर Maven का कौन सा संस्करण पर निर्भर करता है, वहाँ भी है maven.test.skip.exec=trueजो इसके साथ ही परीक्षा निष्पादन को छोड़ देता है skipTests के समान है।
mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=trueको संकलित करेंगे (पहले पैकेज-निष्पादन के कारण) लेकिन उन्हें दूसरे आदेश में नहीं चलाएं। मानक निर्देशिकाओं को मानते हुए, target/test-classesबाद में सभी परीक्षण शामिल होंगे, लेकिन उन्हें निष्पादित नहीं किया गया है।
एक चरण चलाएं test-compile, जिसमें शामिल नहीं है , उदाहरण के लिए compile।
mvn clean compile
मुझे एक और प्रश्न में एक काम के आस-पास मिला , जो वास्तव में आपके 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>
यह काम करने लगता है, लेकिन निश्चित रूप से चरण को अक्षम नहीं करता है, लेकिन उन डिफ़ॉल्ट क्रियाओं को अक्षम कर देता है जो एक विशिष्ट चरण में एक प्लगइन परिभाषित करता है।