Priešistorė

Dirbant su Eclipse ir maven, kai naudojami ne patys paprasčiausi maven plugin'ai labai dažnai Eclipse gauname klaidą Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:findbugs-maven-plugin:3.0.0:check (execution: report, phase: compile) Vietoje org.codehaus.mojo:findbugs-maven-plugin:3.0.0:check gali būti bet koks kitoks plugin'as. Tokia situacija susiklostė istoriškai kai Eclipse kūrėjai norėjo sugebėti apdoroti kiek įmanoma daugiau plugin'ų automatiškai ir pagal juos atitinkamai sukonfigūruoti projektus Eclipse workspace. Tačiau jų badymai buvo nesėkmingi ir vedė į daugybę klaidų ir nenuspėjamų situacijų. Todėl buvo uždėti tam tikri Eclipse apribojimai, kas iššaukia dabar tokias klaidas.

Kaip apeiti tokią situaciją

Nors tokia klaida neįtakoja sistemos veikimo - aplikacija sėkmingai buildinasi su maven ir Eclipse veikimas nėra įtakojamas, tačiau per tokias klaidas kurios pastoviai "kabo" galima nepastebėti svarbesnių problemų.

Nuo Eclipse 4.2 versijos buvo sukurta galimybė apeiti tokią situaciją. Tam reikia sukurti konfigūracinį XML failą, jame nurodyti plugin'us kuriems nenorime matyti lifecycle configuration klaidos, nueiti į Eclipse ir pajungti šią konfigūraciją.

XML konfigūracinis failas

Pagrindinis XML konfigūracinio failo elementas yra lifecycleMappingMetadata, jame yra aprašomas plugin'ų vykdymo sąrašo elementas pluginExecutions, o jo viduje kiekvienam plugin'ui, kurį norime išskirti aprašome elementą pluginExecution. Kiekvieno plugin'o vykdymui nurodome filtrą ir veiksmą ką norime daryti (ignoruoti). Pavyzdžiui norėdami, kad aukščiau minėtas rg.codehaus.mojo:findbugs-maven-plugin:3.0.0:check  nemestų klaidos sukuriame konfigūraciją:

    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <goals>
          <goal>check</goal>
        </goals>
        <versionRange>[0.0,)</versionRange>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>

Norėdami pridėti kitus plugin'us kartojame pluginExecution kiekvienam plugin'ui. Žemiau pateiktas pilnas konfigūracinis failas, kuris ignoruoja šiuos pluginus:

  • org.codehaus.mojo:findbugs-maven-plugin:3.0.0:check
  • org.codehaus.mojo:buildnumber-maven-plugin:1.3:create-timestamp

 lifecycle-mapping-metadata.xml failo turinys:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <goals>
          <goal>check</goal>
        </goals>
        <versionRange>[0.0,)</versionRange>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <goals>
          <goal>create-timestamp</goal>
        </goals>
        <versionRange>[0.0,)</versionRange>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

Eclipse konfigūravimas

Kai turime XML konfigūracinį failą, reikia jį sukonfigūruoti Eclipse. Tam einame į meniu Window -> Preferences -> Maven -> Lifecycle mapping

1. Nurodome kur saugomas konfigūracinis failas lauke "Change mapping file location";

2. Paspaudžiame mygtuką "Reload workspace lifecycle mappings metadata";

3. Uždarome konfigūracijos langą.

4. "Project Explorer" lange pasižymime projektus ir iš kontekstinio meniu pasirenkame Maven - Update Project ... ir jei reikia patiksliname projektų sąrašą ir patvirtiname veiksmą. Persikraus maven projektų konfigūracija ir nurodytiems plugin'amas nebegausime klaidos.

Svarbu! Jei keičiame konfigūracinį failą būtina įvykdyti 2-4 žingsnius, kad pamatytume pakeitimus.

Comments powered by CComment