session.getCurrentProject()返回null - Maven扩展

时间:2016-03-27 01:19:59

标签: 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 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 个答案:

答案 0 :(得分:1)

我更多地使用了这个,并认为从afterProjectsRead()打印时它会打印这些细节。

从官方文件中粘贴:

  

afterSessionStart - 在MavenSession实例发生后调用   创建。此回调旨在允许扩展注入   执行属性,激活配置文件并执行类似的任务   影响MavenProject实例构建。

     

afterProjectsRead - 在所有MavenProject实例之后调用   创建。此回调旨在允许扩展操作   MavenProjects在排序和实际构建执行之前   启动。

所以我认为在AfterSessionStart()中还没有创建MavenProject实例。 认为它绝对可以更具描述性: - /