2012-03-30 26 views
7

Questo mi sta facendo impazzire. Il plugin Maven failsafe non verrà eseguito sul mio progetto. Se corro mvn verify funziona solo surefire. Se scriv mvn failsafe:verify non riesce con il seguente errore:non verrà eseguito su un progetto ma verrà eseguito su un altro - perché?

[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 

Si lamenta di non trovare failsafe-summary.xml. Ma questo dovrebbe essere creato dal plugin. E il plugin funziona perfettamente (e creo il file failsafe-summary.xml se eseguo Antonio Goncalves meraviglioso Arquillian example project.

Così ho copiato le informazioni esatte del plugin che Antonio utilizza, e non funzionerà ancora sul mio progetto. POM per essere esattamente come il suo (eccetto senza un padre genitore) - qualcosa deve andare storto, io proprio non so cosa. Perché il fail-safe funziona sul suo progetto ma non il mio?

Ecco il mio pom di sicurezza ingresso .xml, che è preso proprio dalla sua, ed è lo stesso di quello sul sito usaages fail-safe):

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

Grazie per l'aiuto, mi sta facendo impazzire.

UPDATE Va bene, mi sembra di aver ottenuto il problema cannot find failsafe-summary.xml fisso - a cambiare il mio directory da experiment_server a experiment-server. Immagino che incasini il failsafe.

Tuttavia, sto ancora avendo problemi a eseguire il fail safe dal comando mvn verify o mvn integration-test. Entrambi questi comandi chiamano surefire invece di failsafe. Ora posso eseguire failsafe direttamente utilizzando il comando: mvn failsafe:integration-test, ma non dovrebbe funzionare automaticamente con failsafe con mvn verify? Il mio mvn help:effective-pom mostra che il failsafe è lì, quindi non è questo il problema ... Qualche idea?

+0

Quale versione di Maven esegui? – khmarbaise

+0

È possibile aggiungere un output di una corsa in cui l'IT non è in esecuzione? Come hai chiamato Maven? – khmarbaise

+0

Eseguo Maven 3.04. Non capisco cosa stai chiedendo nella tua seconda domanda. Puoi riformularlo? –

risposta

11

Date un'occhiata al failsafe docs per i nomi dei test failsafe si aspetta di default:

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

I vostri test denominate seguendo uno di questi modelli? In caso contrario, provare a definire l'elemento <includes> nella configurazione del plug-in. Oppure modifica i nomi dei test per adattarli al modello predefinito.


Bene, ora che abbiamo verificato i nomi di classe di prova - in genere quando aggiungo le esecuzioni di plug-config lo faccio qualcosa di simile:

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

Questo vincola esplicitamente gli obiettivi del plugin failsafe voi desidera eseguire le fasi corrette del ciclo di vita della build. Credo che il plug-in surefire sia associato alla fase di ciclo di vita test per impostazione predefinita (per un jar, war, & ejb in ogni caso), ma nulla è legato a integration-test o verify.

+0

Sì, i miei test di integrazione si chiamano foobarIT.java. Ho persino provato a inserire esplicitamente 'includes' in (e lo ho fatto di nuovo ora, per ogni evenienza). Il problema ora non è che il failsafe non trova i miei test - lo fa, quando eseguo 'mvn failsafe: integration-test'. Il problema è quando eseguo 'mvn verify' o' mvn integration-test' failsafe non viene chiamato, surefire is. –

+0

E così è stato! Mi chiedo perché proprio il test di integrazione non abbia funzionato prima. Strano. Comunque grazie! –

0

Se si esegue la versione 2.12.2 del plug-in failsafe, questo è normale. Passa a una versione precedente. Sembra che 2.13 non sia ancora disponibile.

Jira link

2

Qui voglio condividere i miei 2 centesimi. Ho avuto lo stesso problema e la soluzione di cui sopra non ha risolto il mio problema.

Avevo plug-in Maven-failsafe incapsulato nel tag pluginManagement. Ho notato per spostarlo fuori in plugin tag invece quando ho visto questo documento nello schema 4.0.0 Maven:

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.

Speriamo che queste informazioni aggiuntive. risolve più problemi di ppl come me.

+0

Per inciso, a volte questa garanzia è violata. Ad esempio, se si definisce il plugin jRebel nella sezione pluginManagement di un padre gen, il plugin jRebel maven verrà eseguito su ogni sottoprogetto, anche se non è esplicitamente aggiunto alla definizione del plugin del sottoprogetto. Quindi, attenzione. –

1

Per me ha funzionato solo dopo aver aggiunto il "predefinito" include.

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