2011-03-22 128 views
2

我开发了一个Maven报告插件供我公司内部使用。它的设计目的是在独立模式下工作,以便它可以针对给定的项目运行,而无需在pom的<reporting>部分进行配置。为Confluence Wiki定制Maven报告插件

但是,文档的格式目前是xhtml,我们所有的项目文档都存储在Confluence中。在Confluence标记中生成文档将非常方便。已经存在ConfluenceSinkConfluenceSinkFactory类可以生成适当的标记,但我没有看到设置AbstractMavenReport的子类使用接收器的明显方法。

我目前采取的方法是:

  • 重写execute方法,因为这目前硬编码使用SiteRendererSink,其输出的XHTML。
  • 找到SiteRenderer.generateDocument()的替代方案,因为此方法需要上述SiteRendererSink

有没有人处理过这些问题?欣赏反馈。

最后,我可以只记录一下Maven的API文档是否非常糟糕?我不需要一个手持教程 - 只需要一些基本的javadoc和大量的富有洞察力的评论就可以帮助我们完成这个代码库的任何工作。

回答

1

所以我设法做出了一个工作解决方案。我处在正确的轨道上,我只是把事情变得比他们需要的更复杂 - 再次,更好的文档可以帮助我筛选各种插件寻找示例。

所以,如果有人想做类似的事情,首先让你的插件工作生产xhtml。我发现this link在这方面相当有帮助。要更改输出格式,您必须覆盖​​方法并提供generate()方法以及相应的SinkSinkFactory实现。

下面是在合流标记输出一个例子:

@Override 
public void execute() 
    throws MojoExecutionException 
{ 
    try 
    { 
     File outputDirectory = new File(getOutputDirectory()); 

     String filename = getOutputName() + ".cf"; 

     Locale locale = Locale.getDefault(); 

     ConfluenceSinkFactory factory = new ConfluenceSinkFactory(); 
     Sink sink = factory.createSink(outputDirectory, filename); 

     generate(sink, factory, locale); 
    } 
    catch (IOException e) 
    { 
     throw new MojoExecutionException(e); 
    } 
    catch (MavenReportException e) 
    { 
     throw new MojoExecutionException(e); 
    } 
}