为Confluence Wiki定制Maven报告插件

3
我在我们公司开发了一个 Maven 报告插件,用于内部使用。它被设计为独立模式,这样可以针对给定的项目运行,而不必在 pom 的 <reporting> 部分进行配置。
然而,该文档的格式目前是 xhtml,而我们所有的项目文档都存储在 Confluence 上。将文档生成为 Confluence 标记语言将非常方便。已经存在ConfluenceSinkConfluenceSinkFactory类来生成正确的标记语言,但我没有看到明显的方法来设置AbstractMavenReport子类使用的 sinks。
我目前采取的方法是:
  • 重写execute方法,因为它目前硬编码了使用SiteRendererSink,该 sink 输出 xhtml。
  • 查找替代SiteRenderer.generateDocument()的方法,因为此方法需要上述SiteRendererSink
有人解决了这些问题吗?感谢反馈。
最后,我想记录一下 Maven 的 API 文档真是糟糕透顶。我不需要手把手的教程,只需要一些基本的 javadocs 和一些有见地的评论就足以帮助我完成这个代码库的任何工作了。
1个回答

1

所以我成功地想出了一个可行的解决方案。我走在正确的道路上,只是把事情搞得比必要的更加复杂--再次强调,更好的文档会让我避免在各种插件中寻找示例。

因此,如果有人想做类似的事情,首先要让你的插件能够生成xhtml。我发现this link在这方面相当有帮助。要更改输出格式,您需要覆盖execute()方法,并为generate()方法提供适当的SinkSinkFactory实现。

以下是在Confluence标记中输出的示例:

@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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接