Jes*_*sse 3 maven-plugin maven
我正在尝试创建一个自定义maven报告,以便在我在项目中运行mvn网站目标时生成.我按照这里的说明操作:
http://docs.codehaus.org/display/MAVENUSER/Write+your+own+report+plugin
具体来说,我创建了一个实现相应方法的mojo,并在运行mvn site时调用了它的"executeReport(...)方法.我还实现了一个扩展AbstractMavenReportRenderer的类,并填写了renderBody(...)调用接收器中的方法的方法.我的Mojo在其"getRenderer()"方法中返回该自定义渲染器的新实例.
当我运行mvn站点目标时,我的报告显示在报告列表中,并且其html文件是使用常规maven站点魔法正确生成的(所有菜单和标题都包含在内).但我不知道在"executeReport"方法中放入什么以便"填写中间",如上面的文档中所建议的那样.关闭循环需要做什么调用?
我的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());
}
}
Run Code Online (Sandbox Code Playgroud)
我的渲染器:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
答案是将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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |