2016-03-27 6 views
1

各ビルドセッションの期間を計算するためにmaven拡張を書き込もうとしています。ここに私の拡張機能である:session.getCurrentProject()がnullを返す - 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());  } 
    } 

上記のすべてのprint文はnullを印刷し、なぜ私はわかりません。セッションオブジェクトを正しく使用していますか?私の理解は、Mavenがビルドされているプロジェクトのすべてのセッションの詳細を送信することになっているということです。私は別のプロジェクトでこれを試しましたが、私にとってはうまくいかないようです。

+0

ここで何が間違っているのかわかりませんが、[this](https://issues.apache.org/jira/browse/MNG-4639?focusedCommentId = 14421259&page = com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14421259) –

+0

https://github.com/khmarbaise/maven-buildtime-profilerについては、LifeCycleParticipantは解決する最良の方法ではありませんこれにより、EventSpyがより良いアプローチになっています...さらに、LifeCycleParticipantはMaven 3.2.5以上で正しく動作します... – khmarbaise

答えて

1

私はこれをもう少し調べて、afterProjectsRead()の代わりにこれらの詳細を印刷すると考えました。公式ドキュメントから

貼り付け:

afterSessionStart - MavenSessionインスタンスが が作成された後に呼び出されます。このコールバックは、拡張機能で の実行プロパティの挿入、プロファイルのアクティブ化、および がMavenProjectインスタンスの構築に影響する同様のタスクを実行できるようにするためのものです。

afterProjectsRead - すべてのMavenProjectインスタンスが になった後に呼び出されます。このコールバックは、拡張機能が並べ替えられて実際にビルドが実行される前に MavenProjectsを操作できるようにするためのものです。 が開始されます。

私はMavenProjectインスタンスがまだafterSessionStart()で作成されていないと思います。 具体的な記述は間違いないと思います: -/