1

各ビルド セッションの期間を計算する 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 ステートメントが print になる理由がわかりませんnull。セッション オブジェクトを適切に使用していますか? 私の理解では、Maven はビルド中のプロジェクトのすべてのセッションの詳細を送信することになっています。さまざまなプロジェクトでこれを試しましたが、うまくいかないようです。

4

1 に答える 1

1

私はこれをもう少しいじって、代わりに印刷するとこれらの詳細が印刷されると考えましたafterProjectsRead()

公式ドキュメントからの貼り付け:

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

afterProjectsRead - すべての MavenProject インスタンスが作成された後に呼び出されます。このコールバックは、MavenProjects がソートされて実際のビルド実行が開始される前に、拡張機能が MavenProjects を操作できるようにすることを目的としています。

そのため、afterSessionStart() では MavenProject インスタンスはまだ作成されていないと思います。間違いなくもっとわかりやすいと思います:-/

于 2016-03-27T03:24:42.930 に答える