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(). Думаю, это определенно может быть более наглядным:-/