我正在尝试编写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应该发送正在构建的项目的所有会话细节。我在不同的项目上试过这个,但似乎对我不起作用。
答案 0 :(得分:1)
我更多地使用了这个,并认为从afterProjectsRead()
打印时它会打印这些细节。
从官方文件中粘贴:
afterSessionStart - 在MavenSession实例发生后调用 创建。此回调旨在允许扩展注入 执行属性,激活配置文件并执行类似的任务 影响MavenProject实例构建。
afterProjectsRead - 在所有MavenProject实例之后调用 创建。此回调旨在允许扩展操作 MavenProjects在排序和实际构建执行之前 启动。
所以我认为在AfterSessionStart()中还没有创建MavenProject实例。 认为它绝对可以更具描述性: - /