2012-03-30 42 views
7

यह मुझे पागल कर रहा है। मेवेन असफलता प्लगइन मेरी परियोजना पर नहीं चलेगा। अगर मैं mvn verify चलाता हूं तो केवल निश्चित रन चलाता है। अगर मैं mvn failsafe:verify टाइप यह निम्नलिखित त्रुटि के साथ विफल:असफलता प्लगइन एक प्रोजेक्ट पर नहीं चलेगा लेकिन दूसरे पर चलेगा - क्यों?

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Simulation Experiment Server 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.11:verify (default-cli) @ experiment-server --- 
[INFO] Failsafe report directory: C:\IdeaProjects\experiment_server\target\failsafe-reports 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.551s 
[INFO] Finished at: Fri Mar 30 11:24:58 GMT-06:00 2012 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.11:verify (default-cli) on project experiment-server: C:\IdeaProjects\experiment_server\target\failsafe-reports\failsafe-summary.xml (The system cannot find the path specified) -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

यह खोजने failsafe-summary.xml नहीं के बारे में शिकायत की है। लेकिन यह प्लगइन द्वारा बनाया जाना चाहिए। और प्लगइन ठीक काम करता है (और

तो मैं सटीक प्लगइन जानकारी एंटोनियो का उपयोग करता है की नकल की failsafe-summary.xml फ़ाइल अगर मैं एंटोनियो गोन्साल्वेस अद्भुत Arquillian example project। रन रन बनाता है, और यह अभी भी अपने प्रोजेक्ट पर नहीं चलेंगे। मैं मॉडल किया है मेरी पीओएम बिल्कुल उसके जैसा होना चाहिए (बिना माता-पिता के पोम को छोड़कर) - कुछ गलत होना चाहिए, मुझे बस पता नहीं है। क्यों असफलता प्रोजेक्ट पर चलती है, लेकिन मेरा नहीं ??

यहां मेरा असफलता पोम है .xml प्रविष्टि है, जो फेल सेफ usaages साइट पर एक) के रूप में अपने से सही लिया जाता है, और एक ही:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>${version.maven.failsafe.plugin}</version> 
    <configuration> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

किसी भी मदद के लिए धन्यवाद, यह मुझे पागल कर रहा है।

अद्यतन ठीक है, मैं लग cannot find failsafe-summary.xml समस्या तय करने के लिए मिल गया है - मैं experiment_server से experiment-server करने के लिए अपने निर्देशिका बदल जाते हैं। मुझे लगता है कि असफल हो जाता है।

लेकिन, मुझे अभी भी mvn verify या mvn integration-test कमांड से चलाने के लिए असफल होने में परेशानी हो रही है। उन दोनों आदेशों में विफलता के बजाय surefire कॉल करें। अब मैं कमांड का उपयोग करके असफलता चला सकता हूं: mvn failsafe:integration-test, लेकिन असफलता स्वचालित रूप से mvn verify के साथ नहीं चलनी चाहिए? मेरा mvn help:effective-pom दिखाता है कि असफलता वहां है, इसलिए यह समस्या नहीं है ... कोई विचार?

<includes> 
    <include>**/IT*.java</include> 
    <include>**/*IT.java</include> 
    <include>**/*ITCase.java</include> 
</includes> 

अपने परीक्षण इन पैटर्न में से एक नाम दिया गया हो:

+0

आप कौन सा मेवेन संस्करण चलाते हैं? – khmarbaise

+0

एक रन का आउटपुट जोड़ सकता है जहां आईटी नहीं चल रहा है? आपने मेवेन को कैसे बुलाया? – khmarbaise

+0

मैवेन 3.04 चलाता हूं। मैं समझ नहीं पा रहा हूं कि आप अपने दूसरे प्रश्न में क्या पूछ रहे हैं। क्या आप इसे फिर से कर सकते हैं? –

उत्तर

11

परीक्षण नाम डिफ़ॉल्ट रूप से failsafe उम्मीद के लिए failsafe docs पर एक नजर डालें? यदि नहीं, प्लगइन कॉन्फ़िगरेशन में <includes> तत्व को परिभाषित करने का प्रयास करें। या डिफ़ॉल्ट पैटर्न फिट करने के लिए अपने टेस्ट नाम को बदलें। -


ठीक है, अब है कि हम परीक्षण वर्ग के नाम की पुष्टि कर लें आम तौर पर जब मैं फांसी config प्लगइन करने के लिए मैं इसे इस तरह कुछ करना जोड़ें:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>${version.maven.failsafe.plugin}</version> 
    <configuration> 
    </configuration> 
    <executions> 
     <execution> 
      <id>failsafe-integration-tests</id> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>failsafe-verify</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

यह स्पष्ट रूप से failsafe प्लगइन लक्ष्यों बांधता है आप निर्माण जीवन चक्र के सही चरणों में भागना चाहते हैं। मेरा मानना ​​है कि surefire प्लगइन डिफ़ॉल्ट रूप से test जीवन चक्र चरण (एक जार, युद्ध, & ईजेबी के लिए) के लिए बाध्य है, लेकिन integration-test या verify के लिए कुछ भी बाध्य नहीं है।

+0

हाँ है, मेरे एकीकरण परीक्षणों का नाम foobarIT.java है। मैंने स्पष्ट रूप से 'शामिल 'डालने का भी प्रयास किया है (और अभी इसे फिर से किया है)। समस्या अब यह नहीं है कि असफलता को मेरे परीक्षण नहीं मिलते हैं - ऐसा होता है, जब मैं 'एमवीएन असफलता: एकीकरण-परीक्षण' चलाता हूं। समस्या तब होती है जब मैं 'एमवीएन सत्यापित' चलाता हूं या 'एमवीएन एकीकरण-परीक्षण' विफलता को नहीं कहा जाता है, surefire है। –

+0

और उसने ऐसा किया! मुझे आश्चर्य है कि क्यों ' एकीकरण-परीक्षण 'पहले काम नहीं किया था। अजीब। आपका धन्यावाद! –

0

यदि आप असफल प्लगइन के 2.12.2 संस्करण चला रहे हैं, तो यह सामान्य है। पिछले संस्करण पर स्विच करें। ऐसा लगता है कि 2.13 अभी तक उपलब्ध नहीं है।

Jira link

2

यहाँ मैं अपने 2 सेंट साझा करेंगे। मेरे पास एक ही समस्या थी और उपरोक्त समाधान ने मेरी समस्या का समाधान नहीं किया।

मेरे पास प्लगइन मैनेजमेंट टैग में मैक-असफलता-प्लगइन encapsulated था।

Default plugin information to be made available for reference by projects derived from this one. This plugin configuration will not be resolved or bound to the lifecycle unless referenced. Any local configuration for a given plugin will override the plugin's entire definition here.

उम्मीद है कि इस अतिरिक्त जानकारी: मैं जब मैं 4.0.0 Maven स्कीमा में इस डॉक देखा प्लगइन्स में इसे बाहर ले जाने के लिए देखा टैग, इसके बजाय। खुद की तरह अधिक पीपीएल की समस्या हल करता है।

+0

संयोग से, इस गारंटी को कभी-कभी उल्लंघन किया जाता है। उदाहरण के लिए, यदि आप अभिभावक पोम के प्लगइन प्रबंधन अनुभाग में जेआरबेल प्लगइन को परिभाषित करते हैं, तो जेआरबेल मेवेन प्लगइन प्रत्येक उप-प्रोजेक्ट पर चलाएगा, भले ही इसे उस सब-प्रोजेक्ट की प्लगइन परिभाषा में स्पष्ट रूप से जोड़ा न जाए। तो, सावधान रहें। –

1

मेरे लिए यह केवल "डिफ़ॉल्ट" जोड़ने के बाद ही काम करता है।

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-failsafe-plugin</artifactId> 
     <version>2.15</version> 
     <configuration> 
      <includes> 
       <include>**/IT*.java</include> 
       <include>**/*IT.java</include> 
       <include>**/*ITCase.java</include> 
       <include>**/IntegrationTest*.java</include> 
      </includes> 
     </configuration> 
     <executions> 
      <execution> 
       <id>failsafe-integration-tests</id> 
       <phase>integration-test</phase> 
       <goals> 
        <goal>integration-test</goal> 
       </goals> 
      </execution> 
      <execution> 
       <id>failsafe-verify</id> 
       <phase>verify</phase> 
       <goals> 
        <goal>verify</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin>