【问题标题】:Creating a Maven report plugin创建 Maven 报告插件
【发布时间】:2018-01-29 11:08:45
【问题描述】:

我正在尝试为 Maven 构建一个自定义报告插件,以与 mvn site 一起使用。

但我找不到任何有关如何进行的更新文档。

关于创建插件的官方文档提到扩展org.apache.maven.plugin.AbstractMojo。但这是关于通常构建生命周期的“常规”插件。它不适用于 site 构建生命周期。

关于 SO (Writing a maven custom report plugin; how do I generate the html body or "middle" of my report?) 有一个类似的问题,它指的是 2015 年的文档,其中提到了 AbstractMavenReport 类而不是 AbstractMojo 类,但我在任何地方都找不到它可以导入我的项目。

我还查看了一些最近的报告插件的代码(changes 插件在这里:http://svn.apache.org/viewvc/maven/plugins/tags/maven-changes-plugin-2.12.1/),但我找不到我要找的东西。

报告插件是否至少有一个原型?有人有这方面的经验吗?

谢谢! -- 伯特兰

【问题讨论】:

  • 那里没有很多文档。你能告诉我们你正在尝试做什么样的插件吗?最好的事情就是你做了什么。 Whatch 现有插件的代码。如果您告诉我们一些您正在尝试做的事情,我们可以建议一个插件来查看代码。
  • 我正在尝试构建一个插件,该插件会根据项目的一些源代码(以第 3 方编辑器的专有语言编写)生成参考指南。类似于 Javadoc,但具有不同的输入和不同的语法。我实际上找到了我的答案(见下面的答案)。谢谢!

标签: maven maven-3 maven-plugin


【解决方案1】:

再深入一点,我找到了答案: http://maven.apache.org/shared/maven-reporting-impl/index.html

还有一个工作示例: http://svn.apache.org/viewvc/maven/shared/tags/maven-reporting-impl-3.0.0/src/it/setup-reporting-plugin/

所以,基本上,你的 pom.xml 中需要这个:

  <dependencies>
    <dependency>
      <groupId>org.apache.maven.reporting</groupId>
      <artifactId>maven-reporting-impl</artifactId>
      <version>@project.version@</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.reporting</groupId>
      <artifactId>maven-reporting-api</artifactId>
      <version>3.0</version>
    </dependency>

    <!-- plugin API and plugin-tools -->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.0.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.3</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-shared-utils</artifactId>
      <version>3.2.0</version>
    </dependency>
  </dependencies>

然后,您的主类必须扩展 AbstractMavenReport

import java.util.Locale;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.reporting.AbstractMavenReport;
import org.apache.maven.reporting.MavenReportException;

/**
 * Typical code to copy as a reporting plugin start: choose the goal name, then implement getOutputName(),
 * getName( Locale ), getDescription( Locale ) and of course executeReport( Locale ).
 */
@Mojo( name = "custom" )
public class CustomReport
    extends AbstractMavenReport
{
    public String getOutputName()
    {
        return "custom-report";
    }

    public String getName( Locale locale )
    {
        return "Custom Maven Report";
    }

    public String getDescription( Locale locale )
    {
        return "Custom Maven Report Description";
    }

    @Override
    protected void executeReport( Locale locale )
        throws MavenReportException
    {
        // direct report generation using Doxia: compare with CustomReportRenderer to see the benefits of using
        // ReportRenderer
        getSink().head();
        getSink().title();
        getSink().text( "Custom Report Title" );
        getSink().title_();
        getSink().head_();

        getSink().body();

        getSink().section1();
        getSink().sectionTitle1();
        getSink().text( "section" );
        getSink().sectionTitle1_();

        getSink().text( "Custom Maven Report content." );
        getSink().section1_();

        getSink().body_();
    }
}

希望这将有助于 Maven 报告插件的未来开发人员! ;-)

【讨论】:

  • 仅供参考,我刚刚开始了官方 Maven 介绍maven.apache.org/guides/plugin/…,它将更详细地解释为什么它像你描述的那样。帮助和反馈表示赞赏:)
  • 谢谢赫维!我认为这将对开发人员最有帮助!我们能提供什么帮助?
  • 如果您可以在此页面上提供拉取请求,那将对我有很大帮助
  • 我很乐意。但是你必须原谅我是新手:我什至找不到网站的源代码库......我只找到了 Jira 项目issues.apache.org/jira/projects/MNGSITE(我猜这是一个起点),以及Fisheye repo fisheye.apache.org/browse/maven 我找不到您所指的页面(指南)。抱歉这个虚拟问题...:-/
  • 没有愚蠢的问题:我知道 Maven 是一个包含许多部分的大型软件,并且无论是从文档者还是新手 pov 中,都不容易弄清楚哪些部分在哪里。在源代码库页面maven.apache.org/source-repository.html 上,您会找到“此站点的源代码”:也欢迎任何有关改进此页面以使新手更容易的想法(我现在看到没有指向该站点 svn 的 Git 镜像的链接回购 = github.com/apache/maven-site)
猜你喜欢
  • 1970-01-01
  • 2010-11-19
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多