getCurrentProject()返回null-Maven扩展名
我试图编写一个maven扩展来计算每个构建会话的持续时间。这是我的分机:getCurrentProject()返回null-Maven扩展名,maven,maven-2,maven-3,maven-plugin,maven-extension,Maven,Maven 2,Maven 3,Maven Plugin,Maven Extension,我试图编写一个maven扩展来计算每个构建会话的持续时间。这是我的分机: @Parameter( defaultValue = "${project}", readonly = true, required = true ) private MavenProject project; @Component(role = AbstractMavenLifecycleParticipant.class) public class BuildTimeLogger extends Ab
@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应该发送正在构建的项目的所有会话细节。我在不同的项目上尝试过,但似乎对我不起作用 我又玩了一些,发现它在从afterProjectsRead()
打印时确实会打印这些细节
从官方文件粘贴:
afterSessionStart-在MavenSession实例运行后调用
创建。此回调旨在允许扩展注入
执行属性,激活配置文件并执行类似的任务
影响MavenProject实例的构建
afterProjectsRead-在所有MavenProject实例都已加载后调用
创建。此回调旨在允许扩展操作
在对项目进行排序和实际构建执行之前对其进行MavenProjects
开始
因此,我认为MavenProject实例尚未在afterSessionStart()上创建。
我想它肯定可以更具描述性:-/不确定这里出了什么问题,但您可能想检查一下,LifeCycleParticipant不是解决这个问题的最佳方法,因为EventSpy是一种更好的方法……此外,LifeCycleParticipant只能在Maven 3.2.5+上正常工作。。。