2012-03-30 9 views
7

Das macht mich wahnsinnig. Das Maven Failsafe Plugin wird nicht auf meinem Projekt laufen. Wenn ich mvn verify ausführen, läuft nur todsichere. Wenn ich mvn failsafe:verify Typ schlägt es mit dem folgenden Fehler:Failsafe-Plugin wird nicht auf einem Projekt laufen, sondern auf einem anderen laufen - warum?

[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 

Es beschweren sich über nicht failsafe-summary.xml finden. Aber das sollte vom Plugin erstellt werden. Und das Plugin funktioniert gut (und erstellt die failsafe-summary.xml Datei, wenn ich laufen laufen Antonio Goncalves wunderbar Arquillian example project.

Also kopierte ich die genaue Plugin-Informationen Antonio verwendet, und es wird immer noch nicht auf meinem Projekt laufen. Ich habe meine modelliert POM genau wie seine (außer ohne Eltern Pom) - etwas muss schief gehen, ich weiß einfach nicht was.Warum wird Failsafe auf sein Projekt laufen, aber nicht meins?

Hier ist meine Failsafe Pom .xml Eintrag, der direkt von seinem genommen wird, und ist das gleiche wie die auf Fail-safe-usaages Website):

<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> 

Danke für jede Hilfe, das macht mich wahnsinnig.

UPDATE Okay, ich scheine fixierte bekam das cannot find failsafe-summary.xml Problem zu haben - ich mein Verzeichnis von experiment_server zu experiment-server ändern. Ich denke, das vermasselt fehlersicher.

Aber ich habe immer noch Probleme, Failsafe aus dem Befehl mvn verify oder mvn integration-test zu starten. Beide Befehle rufen "todsichere" anstatt "ausfallsicher" auf. Ich kann jetzt Failsafe direkt ausführen, indem Sie den folgenden Befehl verwenden: mvn failsafe:integration-test, aber sollte Failsafe nicht automatisch mit mvn verify ausgeführt werden? Meine mvn help:effective-pom zeigt, dass Failsafe da ist, also das ist nicht das Problem ... Irgendwelche Ideen?

+0

Welche Maven-Version verwenden Sie? – khmarbaise

+0

Kann eine Ausgabe eines Laufs hinzufügen, in dem die IT nicht ausgeführt wird? Wie hast du Maven angerufen? – khmarbaise

+0

Ich laufe Maven 3.04. Ich verstehe nicht, was Sie in Ihrer zweiten Frage fragen. Kannst du es anders formulieren? –

Antwort

11

Werfen Sie einen Blick auf die failsafe docs für den Test Namen failsafe erwartet standardmäßig:

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

Folgt eines dieses Muster benannt Ihre Tests? Wenn nicht, versuchen Sie das <includes> Element in der Plugin-Konfiguration zu definieren. Oder ändern Sie Ihre Testnamen so, dass sie dem Standardmuster entsprechen.


Okay, jetzt, da wir die Testklassennamen überprüft haben - in der Regel, wenn ich Exekutionen hinzufügen config Plugin ich es so etwas wie dieses:

<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> 

Dies bindet explizit die failsafe Plugin Ziele, die Sie möchte zu den richtigen Phasen des Build-Lebenszyklus laufen. Ich glaube, das surefire Plugin ist standardmäßig an die test Lebenszyklusphase gebunden (für ein Glas, Krieg, & ejb sowieso), aber nichts ist an integration-test oder verify gebunden.

+0

Ja, meine Integrationstests heißen foobarIT.java. Ich habe sogar versucht, explizit die 'includes' einzufügen (und tat es jetzt wieder, nur für den Fall). Das Problem ist jetzt nicht, dass Failsafe meine Tests nicht findet - es tut es, wenn ich 'mvn failsafe: integration-test' starte. Das Problem ist, wenn ich "mvn verify" oder "mvn integration-test" ausfühle failsafe wird nicht aufgerufen, todsichere ist. –

+0

Und das war es! Ich frage mich, warum nur ' Integrationstest' zuvor nicht funktioniert hat. Seltsam. Trotzdem danke! –

0

Wenn Sie 2.12.2 Version des Failsafe-Plugins ausführen, ist dies normal. Wechseln Sie zu einer früheren Version. Es scheint, dass 2.13 noch nicht verfügbar ist.

Jira link

2

Hier werde ich meine 2 Cent teilen. Ich hatte das gleiche Problem und Lösung oben löste mein Problem nicht.

Ich hatte maven-failsafe-plugin eingekapselt in pluginManagement tag. Ich bemerkte es ausziehen in Plugins-Tag statt, als ich diese doc sah in dem 4.0.0 Maven Schema:

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.

Hoffentlich zusätzliche Informationen. löst mehr pls Problem wie ich.

+0

Übrigens wird diese Garantie manchmal verletzt. Wenn Sie beispielsweise das jRebel-Plugin im Abschnitt pluginManagement eines Elternteils definieren, wird das jRebel maven-Plugin in jedem Unterprojekt ausgeführt, auch wenn es nicht explizit der Plugin-Definition dieses Unterprojekts hinzugefügt wird. Hüte dich. –

1

Für mich funktionierte es erst nachdem ich die "default" includes hinzugefügt habe.

<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>