2011-03-22 119 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); 
    } 
}