session.getCurrentProject() возвращает ноль - расширения Maven

Я пытаюсь написать расширение maven для расчета продолжительности каждого сеанса сборки. Вот мое расширение:

  @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());       }  
    }

Я не уверен, почему все вышеперечисленные печатные заявления печатают null, Я правильно использую объект сеанса? Насколько я понимаю, Maven должен отправить все детали сеанса строящегося проекта. Я пробовал это на разных проектах, но мне это не помогло.

1 ответ

Решение

Я поиграл с этим еще немного и подумал, что он печатает эти детали при печати из afterProjectsRead() вместо.

Склеивание из официальной документации:

afterSessionStart - вызывается после создания экземпляра MavenSession. Этот обратный вызов предназначен для того, чтобы позволить расширениям внедрять свойства выполнения, активировать профили и выполнять аналогичные задачи, которые влияют на создание экземпляра MavenProject.

afterProjectsRead - Вызывается после создания всех экземпляров MavenProject. Этот обратный вызов предназначен для того, чтобы позволить расширениям манипулировать объектами MavenProject до их сортировки и начала фактического выполнения сборки.

Поэтому я думаю, что экземпляр MavenProject еще не создан в afterSessionStart(). Думаю, это определенно может быть более наглядным:-/

Другие вопросы по тегам