Esecuzione plug-in non coperta dalla configurazione del ciclo di vita (archetipo EAR di JBossas 7)

Sto usando Eclipse 3.7 Indigo con Maven M2E Plugin 1.0.100.

Utilizzando l’archetipo EAR JavaEE 6 di JBoss 7.x, il pom per EAR mi sta dando questo errore:

L’esecuzione del plugin non è coperta dalla configurazione del ciclo di vita: org.apache.maven.plugins: maven-ear-plugin: 2.6: generate-application-xml (esecuzione: default-generate-application-xml, phase: generate-resources)

 org.apache.maven.plugins maven-ear-plugin 2.6   6  lib    

Questa è una “caratteristica” del plugin M2E che era stata introdotta qualche tempo fa. Non è direttamente correlato al plug-in di JBoss EAR ma si verifica anche con la maggior parte dei plug-in Maven.

Se hai un’esecuzione plugin definita nel tuo pom (come l’esecuzione di maven-ear-plugin:generate-application-xml ), devi anche aggiungere ulteriori informazioni di configurazione per M2E che indicano a M2E cosa fare quando viene eseguito il build in Eclipse, ad esempio, se l’esecuzione del plugin dovesse essere ignorata o eseguita da M2E, dovrebbe anche essere eseguita per build incrementali, … Se tale informazione manca, M2E si lamenta mostrando questo messaggio di errore:

“L’esecuzione del plugin non è coperta dalla configurazione del ciclo di vita”

Vedi qui per una spiegazione più dettagliata e alcuni esempi di configurazione che devono essere aggiunti al pom per far sì che l’errore scompaia:

https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

comunque è troppo tardi, ma la mia soluzione era semplice fare clic con il tasto destro del mouse su un messaggio di errore in Eclipse e scegliere Correzione rapida >> Ignora per ogni pom con tali errori

Eclipse ha il concetto di build incrementali. È incredibilmente utile perché consente di risparmiare un sacco di tempo.

Come è utile?

Supponiamo che tu abbia appena modificato un singolo file .java. I builder incrementali saranno in grado di compilare il codice senza dover ricompilare tutto (che richiederà più tempo).

Ora qual è il problema con Maven Plugin

La maggior parte dei plugin Maven non sono progettati per build incrementali e quindi creano problemi per m2e. m2e non sa se l’objective del plugin è qualcosa che è cruciale o se è irrilevante. Se esegue solo ogni plugin quando un singolo file cambia, ci vorrà un sacco di tempo.

Questo è il motivo per cui m2e si basa sulle informazioni dei metadati per capire come deve essere gestita l’esecuzione. m2e ha messo a punto diverse opzioni per fornire queste informazioni sui metadati e l’ordine di preferenza è il seguente (dal più alto al più basso)

  1. file pom.xml del progetto
  2. genitore, nonno e così via con i file pom.xml
  3. [m2e 1.2+] preferenze dello spazio di lavoro
  4. estensioni m2e installate
  5. [m2e 1.1+] metadati di mapping del ciclo di vita forniti dal plugin di Maven
  6. metadati di mapping del ciclo di vita predefinito forniti con m2e

1,2 si riferisce alla specifica della sezione pluginManagement nel tag del tuo file pom o di uno dei suoi genitori. M2E legge questa configurazione per configurare il progetto. Il frammento di codice impartisce istruzioni a m2e di ignorare jslint e compress obiettivi del plugin yuicompress-maven

     org.eclipse.m2e lifecycle-mapping 1.0.0      net.alchim31.maven yuicompressor-maven-plugin [1.0,)  compress jslint             

3) Nel caso in cui non si preferisca inquinare il file pom con questi metadati, è ansible memorizzarlo in un file XML esterno (opzione 3). Di seguito è riportato un file di mapping di esempio che indica a m2e di ignorare jslint e compress obiettivi del plugin di yuicompress-maven

      net.alchim31.maven yuicompressor-maven-plugin [1.0,)  compress jslint         

4) Nel caso in cui non ti piaccia nessuna di queste 3 opzioni, puoi usare un connettore m2e (estensione) per il plugin maven. Il connettore a sua volta fornirà i metadati a m2e. Puoi vedere un esempio delle informazioni sui metadati all’interno di un connettore a questo link . Potresti aver notato che i metadati si riferiscono a un configuratore. Ciò significa semplicemente che m2e delegherà la responsabilità a quella particolare class java fornita dall’autore dell’estensione. Il configuratore può configurare il progetto (come ad esempio aggiungere ulteriori cartelle sorgenti ecc.) E decidere se eseguire il vero plugin maven durante una build incrementale (se non correttamente gestito all’interno del configuratore, può portare a infinite build di progetto)

Fare riferimento a questi collegamenti per un esempio di configurazione ( link1 , link2 ). Quindi nel caso in cui il plugin sia qualcosa che può essere gestito tramite un connettore esterno, è ansible installarlo. m2e mantiene un elenco di tali connettori forniti da altri sviluppatori. Questo è noto come catalogo di scoperta. m2e chiederà di installare un connettore se non si dispone già di metadati di mapping del ciclo di vita per l’esecuzione tramite una delle opzioni (1-6) e il catalogo di rilevamento ha un’estensione che può gestire l’esecuzione.

L’immagine qui sotto mostra come m2e ti chiede di installare il connettore per il plugin build-helper-maven. installare il connettore suggerito dal catalogo di scoperta .

5) m2e incoraggia gli autori dei plugin a supportare la build incrementale e fornire il mapping del ciclo di vita all’interno del plugin stesso. Ciò significherebbe che gli utenti non dovranno utilizzare alcun mapping o connettore del ciclo di vita aggiuntivo. Alcuni autori di plug-in hanno già implementato questo

6) Per impostazione predefinita m2e contiene i metadati di mapping del ciclo di vita per la maggior parte dei plugin comunemente usati come il plug-in maven-compilatore e molti altri.

Ora torniamo alla domanda: probabilmente puoi semplicemente fornire una mapping del ciclo di vita ignorata in 1, 2 o 3 per quell’objective specifico che sta creando problemi per te.

Una buona soluzione per ricordare che m2e potrebbe essere configurato meglio, senza che il progetto erediti un indicatore di errore falso positivo, è solo un downgrade di quegli errori agli avvisi:

Finestra -> Preferenze -> Maven -> Errori / Avvisi -> L’esecuzione del plugin non è coperta dalla configurazione del ciclo di vita = Avviso

Ho provato a eseguire il plug-in specifico subito dopo la pulizia, ovvero post-clean (l’impostazione predefinita è clean phase). Questo ha funzionato per me con l’eclipse indaco. Appena aggiunto post-clean ho risolto il problema per me.

     post-clean  update-widgetset    

Sono stato in grado di risolvere lo stesso problema con maven-antrun-plugin e jaxb2-maven-plugin in Eclipse Kepler 4.3 accedendo a questa soluzione: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
Quindi il contenuto del mio% elipse_workspace_name% /. Metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xml è il seguente:

      org.apache.maven.plugins maven-antrun-plugin 1.3  run         org.codehaus.mojo jaxb2-maven-plugin 1.2  xjc         

* Doveva riavviare Eclipse per vedere scomparire gli errori.

A partire da Maven Eclipse (m2e) versione 0.12 tutti gli obiettivi del ciclo di vita di Maven devono essere mappati su un’estensione m2e installata. In questo caso, il maven-ear-plugin aveva un objective non mappato default-generate-application-xml .

Puoi escludere gli obiettivi del ciclo di vita non mappati semplicemente seguendo le istruzioni qui:

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

In alternativa, è sufficiente fare clic con il pulsante destro del mouse sul messaggio di errore in Eclipse e scegliere Quick Fix -> Ignore for every pom with such errors .

Devi stare attento quando ignori gli obiettivi del ciclo di vita: in genere gli obiettivi fanno qualcosa di utile e se li configuri per essere ignorati in Eclipse potresti perdere importanti passi di costruzione. Potresti anche prendere in considerazione l’aggiunta del supporto all’estensione EAR di Maven Eclipse per l’objective del ciclo di vita non mappato.

Con il meccanismo spiegato nella risposta di Jan, ho chiesto al plug-in m2e di ignorare l’objective “generate-application-xml”. Questo elimina l’errore e sembra funzionare poiché m2e crea application.xml.

Quindi, in pratica, l’errore ci ha costretti a decidere quale meccanismo è responsabile della generazione di application.xml quando la build di Maven gira all’interno di Eclipse sotto il controllo del plugin m2e. E abbiamo deciso che m2e è in carica.

    org.apache.maven.plugins maven-ear-plugin 2.6  6 lib      **  org.eclipse.m2e lifecycle-mapping 1.0.0      org.apache.maven.plugins maven-ear-plugin [2.1,)  generate-application-xml          **    

È necessario comprendere il contenuto in M2E_plugin_execution_not_covered e seguire i passaggi indicati di seguito:

  • Scegli org.eclipse.m2e.lifecyclemapping.defaults jar dalla cartella dei plugin di eclipse
  • Estrailo e apri lifecycle-mapping-metadata.xml dove puoi trovare tutte le estensioni plugin.
  • Aggiungi il pluginEsempi dei tuoi plugin che vengono mostrati come errori con sotto i tag .

es .: per errore di proprietà del progetto di scrittura, aggiungi questo frammento nella sezione del file lifecycle-mapping-metadata.xml:

    org.codehaus.mojo properties-maven-plugin 1.0-alpha-2  write-project-properties       
  • Sostituisci quel file XML nel JAR
  • Sostituisci il JAR aggiornato nella cartella dei plugin di Eclipse
  • Riavvia Eclipse

Non dovresti vedere errori in futuro per qualsiasi progetto.

Anche se la domanda è troppo vecchia, ma mi piacerebbe condividere la soluzione che ha funzionato per me perché ho già controllato tutto quando si tratta di questo errore. È stato un dolore, ho passato due giorni a provare e alla fine la soluzione era:

aggiornare il plugin M2e in eclipse

pulire e ribuild