2016-05-19 20 views
0

Ich habe eine POM-Datei (die von Eclipse ausgeführt wird), wo ich eine ANT-Task während der generate-sources-Phase ausführen möchte. Basierend auf m2e documentation, in How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds, Maven: execute antrun task during package und Where should be placed maven-compiler-plugin declaration: in <plugins> or <pluginManagement>?, ich auf diese Weise meine POM-Datei geschrieben:Maven (m2e) führt keine ant-Task aus

<?xml version="1.0" encoding="UTF-8"?> 
    <project> 

    ... 

    <build> 
     <pluginManagement> 
      <plugins> 
       ... 
       <plugin> 
        <groupId>org.eclipse.m2e</groupId> 
        <artifactId>lifecycle-mapping</artifactId> 
        <version>1.0.0</version> 
        <configuration> 
         <lifecycleMappingMetadata> 
          <pluginExecutions> 
           <pluginExecution> 
            <pluginExecutionFilter> 
             <groupId>org.apache.maven.plugins</groupId> 
             <artifactId>maven-antrun-plugin</artifactId> 
             <versionRange>[1.8,)</versionRange> 
             <goals> 
              <goal>generate-sources</goal> 
             </goals> 
            </pluginExecutionFilter> 
            <action> 
             <execute/> 
            </action> 
           </pluginExecution> 
          </pluginExecutions> 
         </lifecycleMappingMetadata> 
        </configuration> 
       </plugin> 

      </plugins> 
     </pluginManagement> 

     <plugins> 

      <plugin> 
       <!-- Plugin 1 --> 
      </plugin> 

      <plugin> 
       <!-- Plugin to be executed during generate-sources phase. --> 
      </plugin> 

      <plugin> 
       <!-- Should be in the generate-sources phase after the plugin above. --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.8</version> 
       <executions> 
        <execution> 
         <id>ant-test</id> 
         <configuration> 

          <task> 
           <echo message="ANT TEST" /> 
          </task> 

         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 

    ... 

</project> 

Was ich von meiner Lektüre verstanden wird, ist, dass ich sage mich zu fragen, um Maven folgende: Zuerst fragen Eclipse Plugin für Maven (m2e), damit das maven-antrun-plugin (Version 1.8 oder höher) während generate-sources ausgeführt werden kann. Als nächstes, in der generate-sources Phase und nach der Ausführung des ersten Plugins, rufen Sie das Ant-Plugin auf, um die Aufgabe auszuführen, die meine Nachricht echo.

Die Nachricht wird jedoch nicht angezeigt. Weder wenn ich nur das generate-sources Ziel ausführe, noch wenn ich das install Ziel ausführe.

ich folgen, wenn this sugestion here, und fügen Sie das <phase> Element innerhalb <execution>, wie hier:

<executions> 
    <execution> 
     <id>ant-test</id> 
     *<phase>generate-sources</phase>* 
     <configuration> 

      <task> 
       <echo message="ANT TEST" /> 
      </task> 

     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
    </execution> 
</executions> 

Ich habe eine Eclipse-Fehlermeldung: Ausführung Plugin nicht durch Lifecycle-Konfiguration abgedeckt: org.apache.maven.plugins : maven-antrun-plugin: 1.8: run (Ausführung: ant-test, Phase: generate-sources). Here zeigt ein Beispiel, wo es keine spezifische <pluginManagement> für Ant-Plugin gibt. Aber auch ich hatte keinen Erfolg.

Was fehlt hier?

Danke,

Rafael Afonso

+0

Ändern Sie die Konfiguration in m2e von 'generate-sources' nach' run' ... – khmarbaise

+0

Sorry, es hat nicht funktioniert. :( –

Antwort

0

Eigentlich entdeckt, ich, dass die Fehlermeldung Plugin Ausführung durch Lifecycle-Konfiguration nicht abgedeckt: org.apache.maven.plugins: Maven-antrun-Plugin: 1,8: run (Ausführung: ant-test, Phase: generate-sources) hat in der Maven-Ausführung keinen Effekt. Die Nachricht wird ohne Probleme angezeigt. Um die Wahrheit zu sagen, musste ich die task zu target ändern, aber die Nachricht wird weiterhin angezeigt. Mag sein, dass es nur ein kindlicher Fehler ist, der uns nur nervt.