2016-03-27 5 views
1

Ich versuche, eine Maven-Erweiterung zu schreiben, um die Dauer jeder Build-Sitzung zu berechnen. Hier meine Erweiterung ist:session.getCurrentProject() gibt null zurück - Maven-Erweiterungen

@Parameter(defaultValue = "${project}", readonly = true, required = true) 
    private MavenProject project; 

    @Component(role = AbstractMavenLifecycleParticipant.class) 
    public class BuildTimeLogger extends AbstractMavenLifecycleParticipant { 

    public void afterSessionStart(MavenSession session) throws MavenExecutionException { 

     System.out.println("${project}: "+project); 
     System.out.println("Top level project:"+session.getTopLevelProject()); 
System.out.println("session.getcurrentproject():"+session.getCurrentProject());  } 
    } 

Ich bin mir nicht sicher, warum alle oben genannten Druckanweisungen null drucken. Benutze ich das Session-Objekt richtig? Mein Verständnis ist, dass Maven alle Sitzungsdetails des Projekts, das gebaut wird, senden soll. Ich habe das an verschiedenen Projekten versucht, scheint aber nicht für mich zu funktionieren.

+0

nicht sicher, was hier falsch ist, aber Sie möchten überprüfen [this] (https://issues.apache.org/jira/browse/MNG-4639?focusedCommentId = 14421259 & page = com.atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel # comment-14421259) –

+0

Was ist mit https://github.com/khmarbaise/maven-buildtime-profiler und LifeCycleParticipant ist nicht der beste Weg zu lösen das ist ein EventSpy ist ein besserer Ansatz ... Außerdem kann der LifeCycleParticipant nur mit Maven 3.2.5+ fehlerfrei arbeiten ... – khmarbaise

Antwort

1

Ich spielte mit diesem etwas mehr herum und dachte, dass es diese Details druckt, wenn es von afterProjectsRead() stattdessen gedruckt wird.

Einfügen von offizieller Dokumentation:

afterSessionStart - Ausgeführt nach MavenSession Instanz haben erstellt. Dieser Rückruf soll Extensions ermöglichen, Ausführungseigenschaften zu injizieren, Profile zu aktivieren und ähnliche Aufgaben auszuführen, die die MavenProject-Instanzkonstruktion beeinflussen.

afterProjectsRead - Wird aufgerufen, nachdem alle MavenProject-Instanzen erstellt wurden. Dieser Callback soll es Erweiterungen erlauben, MavenProjects zu manipulieren, bevor sie sortiert werden und die eigentliche Build-Ausführung startet.

Also ich denke, die MavenProject-Instanz ist noch nicht bei afterSessionStart() erstellt. Denken Sie, es könnte auf jeden Fall beschreibender sein: -/