编写maven自定义报告插件;如何生成报告的 html 正文或“中间”?

2023-12-23

我正在尝试创建一个自定义 Maven 报告,以便在我的项目中运行 mvn 站点目标时生成。我已按照此处的说明进行操作:

http://docs.codehaus.org/display/MAVENUSER/Write+your+own+report+plugin http://web.archive.org/web/20150520200457/http://docs.codehaus.org/display/MAVENUSER/Write+your+own+report+plugin

具体来说,我创建了一个实现适当方法的 mojo,当我运行 mvn site 时,会调用它的“executeReport(...) 方法”。我还实现了一个扩展 AbstractMavenReportRenderer 的类,并填写了 renderBody(...)方法,并对接收器中的方法进行一些调用。My Mojo 在其“getRenderer()”方法中返回该自定义渲染器的新实例。

当我运行 mvn 站点目标时,我的报告显示在报告列表中,并且它的 html 文件是使用一般 Maven 站点魔法正确生成的(所有菜单和标题以及所有内容都在那里)。但我不知道要在“executeReport”方法中放入什么,以便按照上面文档中的建议“填写中间部分”。我需要拨打什么电话才能关闭该循环?

My Mojo:

@Mojo( name = "message-documentation-report-generator")
public class MessageDocumentationReportMojo extends AbstractMavenReport
{

  /**
   * Directory where reports will go.
   *
   * @parameter expression="${project.reporting.outputDirectory}"
   * @required
   * @readonly
   */
  private String outputDirectory;

  /**
   * @parameter default-value="${project}"
   * @required
   * @readonly
   */
  private MavenProject project;

  @Override
  public String getDescription(Locale arg0)
  {
    return "Message Documentation Information";
  }

  @Override
  public String getName(Locale arg0)
  {
    return "Messages";
  }

  @Override
  public String getOutputName()
  {
    return "messages";
  }

  @Override
  protected void executeReport(Locale arg0) throws MavenReportException
  {
  }

  @Override
  protected String getOutputDirectory()
  {
    return outputDirectory;
  }

  @Override
  protected MavenProject getProject()
  {
    return project;
  }

  @Override
  protected Renderer getSiteRenderer()
  {
    return (Renderer) new MessageReportSiteRenderer(getSink());
  }
}

还有我的渲染器:

public class MessageReportSiteRenderer extends AbstractMavenReportRenderer
{

  public MessageReportSiteRenderer(Sink sink)
  {
    super(sink);
  }

  @Override
  public String getTitle()
  {
    return "Message Documentation Renderer?";
  }

  @Override
  protected void renderBody()
  {
    sink.head();
    sink.title();
    sink.text("FIDL graph report");
    sink.title_();
    sink.head_();

    sink.body();
    sink.section1();

    sink.sectionTitle1();
    sink.text("FIDL automata index");
    sink.sectionTitle1_();
    sink.lineBreak();
    sink.lineBreak();

    sink.text("List of behavioral elements with link to graphical representation of FIDL automata.");

    sink.lineBreak();
    sink.section1_();
    sink.body_();
    sink.flush();
    sink.close();
  }

}

答案是将 renderBody() 中的代码放入 executeReport(Locale loc) 方法中:

@Override
protected void executeReport(Locale arg0) throws MavenReportException
{

sink.head();
sink.title();
sink.text("FIDL graph report");
sink.title_();
sink.head_();

sink.body();
sink.section1();

sink.sectionTitle1();
sink.text("FIDL automata index");
sink.sectionTitle1_();
sink.lineBreak();
sink.lineBreak();

sink.text("List of behavioral elements with link to graphical representation of FIDL automata.");

sink.lineBreak();
sink.section1_();
sink.body_();
sink.flush();
sink.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写maven自定义报告插件;如何生成报告的 html 正文或“中间”? 的相关文章

随机推荐