2009-09-07 13 views
10

मैं एक चींटी कार्य चला रहा हूं जो मैवेन-एंट्रून-प्लगइन का उपयोग करके मैवेन के भीतर से जूनिट परीक्षण चलाता है। आमंत्रण इस तरह दिखता है:विफल मैवेन बिल्ड जब maven-antrun-plugin विफल हुआ

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>ant-test</id> 
     <phase>test</phase> 
     <goals> 
     <goal>run</goal> 
     </goals> 
     <configuration> 
     <tasks unless="maven.test.skip"> 
      <ant antfile="${basedir}/build.xml" target="test"> 
      <property name="build.compiler" value="extJavac" /> 
      </ant> 
     </tasks> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 

जब परीक्षण विफल हो जाते हैं, तो निर्माण जारी रहता है और सफलता की रिपोर्ट करता है। मैं ('चींटी -f example.xml' कमांड लाइन से चींटी चल) चींटी केवल के साथ इस व्यवहार पुन: पेश करने की कोशिश की:

<project name="example" basedir="." default="aa"> 
<target name="aa"> 
    <ant antfile="build.xml" target="test" /> 
</target> 
</project> 

लेकिन इस मामले में सब कुछ के रूप में की उम्मीद है में: पहला परीक्षण की विफलता का निर्माण और यह रिपोर्ट बंद हो जाता है असफल रहा ऐसा लगता है जैसे मैवेन कुछ जादू करता है (या किसी अन्य तरीके से चींटी का आह्वान करता है)।

तो मेरा प्रश्न अगर असफल परीक्षण कार्य विफल होने पर विफल मैवेन निर्माण के प्रभाव को कैसे प्राप्त किया जाए।

उत्तर

4

आपका प्रश्न बदले में एक स्पष्ट सवाल उठाता है, क्यों न केवल जुनीट चलाने के लिए मेवेन का उपयोग करें? surefire plugin किसी भी परीक्षण (परीक्षण चरण में) निष्पादित करेगा जो टेस्ट-कंपाइल चरण में लक्ष्य/परीक्षण-वर्गों (आमतौर पर स्रोत/परीक्षण/जावा की सामग्री) में संकलित किए गए थे। एक JavaWorld article आपको पता चल सकता उपयोगी

मान लिया जाये कि आप चींटी का उपयोग करने के परीक्षण आह्वान करने के लिए एक वैध कारण है Maven साथ JUnit का उपयोग कर एक परिचय दे रही है, तो आप यह सुनिश्चित करें कि चींटी विफल यदि परीक्षण अमान्य हैं की स्थापना की है की जरूरत है। आप JUnit task को कॉन्फ़िगर करके ऐसा कर सकते हैं। जिन गुणों को आप सेट करना चाहते हैं वे हैल्टन आतंक या हैल्टनफेलर हैं। वैकल्पिक रूप से आप विफलता पर एक संपत्ति सेट कर सकते हैं और विफलताप्रोर्टी संपत्ति का उपयोग करके खुद को बनाने में असफल हो जाते हैं।


मैंने मेवन बिल्डिंग विफलता के कारण एक चींटी विफलता का प्रदर्शन करने के लिए दो उदाहरण शामिल किए हैं। पहला असफल कार्य का प्रत्यक्ष आविष्कार है, दूसरा एक build.xml में एक कार्य को उसी तरीके से आमंत्रित करता है जैसा आपने किया है।

यह तुच्छ उदाहरण से पता चलता है कि एक चींटी विफलता एक Maven विफल निर्माण का कारण होगा:

<plugins> 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>test</phase> 
     <configuration> 
      <tasks> 
      <fail message="Something wrong here."/> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

[INFO] [antrun:run {execution: default}] 
[INFO] Executing tasks 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An Ant BuildException has occured: Something wrong here. 

उदाहरण का विस्तार एक चींटी कॉल का उपयोग करने के रूप में आप हैं:

<plugins> 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>test</phase> 
     <configuration> 
     <tasks unless="maven.test.skip"> 
      <ant antfile="${basedir}/build.xml" target="test"> 
      <property name="build.compiler" value="extJavac" /> 
      </ant> 
     </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

build.xml के साथ के रूप में:

<?xml version="1.0"?> 
<project name="test" default="test" basedir="."> 
    <target name="test"> 
    <fail message="Something wrong here."/> 
    </target> 
</project> 

निम्न त्रुटि देता है:

[INFO] [antrun:run {execution: default}] 
[INFO] Executing tasks 

test: 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An Ant BuildException has occured: The following error occurred while executing this line: 
C:\test\anttest\build.xml:4: Something wrong here. 
+0

आपके उत्तर के लिए धन्यवाद! मैं परीक्षण चलाने के लिए चींटी का उपयोग करने का कारण यह है कि मेरा एप्लिकेशन का यूआई नेटबीन्स प्लेटफॉर्म में किया जाता है। प्लेटफॉर्म चींटी बिल्ड फाइलों का उपयोग करने के लिए तैयार है, जो मैं मैवेन को पोर्ट नहीं करना चाहता हूं। नेटबीन्स प्लेटफार्म निर्माण लक्ष्य चलाने के दौरान आपके उदाहरण और जो अनुभव होता है, उसके बीच एक अंतर यह है कि आपके उदाहरण में "निर्मित त्रुटि" है, जबकि प्लेटफार्म बिल्ड "निर्मित विफल" संदेश देता है।शायद मैवेन जूनिट के काम "हेलटन आतंक" जैसे कुछ के साथ चींटी चलाता है लेकिन कोई "हेलटनफेलर" नहीं? –

11

आप antrun के लिए FailOnError विशेषता पर एक नज़र लेने के लिए चाहते हो सकता है:

<exec executable="python" dir="${project.root}/modules" failonerror="true"></exec> 

Reference

+0

सालों बाद ... मैं आरटीएफएम कर सकता हूं, धन्यवाद :-) (मानक चींटी दस्तावेज में भी दस्तावेज किया गया है https://ant.apache.org/manual/Tasks/exec.html) – Gunnar

संबंधित मुद्दे