3

社内で使用する Maven レポート プラグインを開発しました。<reporting>スタンドアロン モードで動作するように設計されているため、pomのセクションで構成する必要なく、特定のプロジェクトに対して実行できます。

ただし、ドキュメントの形式は現在 xhtml であり、すべてのプロジェクト ドキュメントは現在 Confluence に保存されています。Confluence マークアップでドキュメントを生成すると非常に便利です。適切なマークアップを生成するクラスは既に存在ConfluenceSinkしますが、 . ConfluenceSinkFactoryAbstractMavenReport

私が現在取っているアプローチは次のとおりです。

  • これは現在、xhtml を出力executeする の使用をハードコーディングしているため、メソッドをオーバーライドします。SiteRendererSink
  • この方法SiteRenderer.generateDocument()には上記のSiteRendererSink.

誰かがこれらの問題に取り組んだことがありますか? フィードバックに感謝します。

最後に、Maven の API ドキュメンテーションはひどいものであるという記録を残しておくことはできますか? 手持ちのチュートリアルは必要ありません。いくつかの基本的な javadoc と洞察に満ちたコメントがあれば、このコードベースで何かを成し遂げるのに非常に役立ちます。

4

1 に答える 1

1

それで、私はなんとか実用的なソリューションを作り上げました。私は正しい軌道に乗っていました。必要以上に複雑なものを作っていたのです。繰り返しますが、より良いドキュメントがあれば、例を探すためにさまざまなプラグインをふるいにかける必要がありませんでした。

したがって、誰かが同様のことをしたい場合は、まずプラグインを xhtml の生成で動作させます。このリンクは、その点でかなり役立つことがわかりました。出力形式を変更するには、メソッドをオーバーライドし、メソッドに適切な実装を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);
    }
}
于 2011-03-23T20:13:24.707 に答える