【问题标题】:Maven site (Maven 3) generates empty site folderMaven站点(Maven 3)生成空站点文件夹
【发布时间】:2011-01-12 23:21:29
【问题描述】:

我正在尝试使用 maven 站点插件创建一个基本的 maven 站点。所以我把这个添加到我的 pom 中:

<reporting>
    <plugins>
        <!--JavaDoc setup-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <defaultAuthor>Leon Blakey</defaultAuthor>
                <defaultVersion>${project.version}</defaultVersion>
                <links>
                    <link>http://download.oracle.com/javase/6/docs/api</link>
                </links>
            </configuration>
        </plugin>
    </plugins>
</reporting>

然后跑mvn site --errors

[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building pircbotx 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-site-plugin:2.0.1:site (default-site) @ pircbotx ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.688s
[INFO] Finished at: Wed Jan 12 18:08:00 EST 2011
[INFO] Final Memory: 5M/13M
[INFO] ------------------------------------------------------------------------
W:\programming\pircbot-hg>

嗯,奇怪的是没有输出。所以当我检查目标/站点时,它是空的。唯一的文件夹是 images/ 、 css/ 和 WEB-INF/ ,其中填充了一些通用图片。没有 javadoc 也没有网站。

这可以用mvn site:sitemvn org.apache.maven.plugins:maven-site-plugin:2.2:site 重现(显然maven 默认只想使用2.0.1)

奇怪的是,我可以回到 maven 2.2.1 并成功生成站点。但是当我使用 3.0.1-RC1(恰好与 Netbeans 一起提供)时,它失败了。

我做错了什么会导致站点插件在 3.0.1 而不是 2.2.1 中失败?

【问题讨论】:

标签: java maven javadoc maven-javadoc-plugin maven-site-plugin


【解决方案1】:

也许您可以尝试使用Maven Site Plugin 3.x。您可以通过在 pom.xml 中添加以下内容来做到这一点

<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.0-beta-3</version>
        </plugin>
    </plugins>
</build>

【讨论】:

  • 是的,使用 3.0-beta-3 插件肯定会导致 maven 实际工作,但使用带有 -beta 的插件版本让我感到厌烦。
  • 如果我使用 Maven 2 会中断吗?我在 2.2.1 和 3.0.1 之间迁移
  • @TheLQ。是的。这个版本的插件需要maven 3
  • 这在 Maven 3 中有效。我想我只需要使用它。感谢您的帮助
  • 如果你想让它同时在 Maven 2 和 3 中工作(这是使用我的 CI 服务器的要求),你需要把它放在配置文件中。我发现这个激活部分似乎给出了可行的结果:&lt;activation&gt;&lt;file&gt;&lt;exists&gt;${basedir}&lt;/exists&gt;&lt;/file&gt;&lt;/activation&gt;
【解决方案2】:

我遇到了同样的问题。我找到了一个关于这个话题的blog post

引用博客(强调我的):

如果您一直使用 pom.xml 文件的报告部分来生成代码质量指标、javadoc 报告等,那么您可能需要做一些工作才能将此功能迁移到 Maven 3。确实,报告和 reportSets 部分已被弃用(它不会导致 Maven 3 出错,它只会被忽略),并已被 maven-site- 配置块中的 reportPlugins 部分替换插件本身。

忽略旧的&lt;reporting&gt; 而没有任何关于它被弃用的警告似乎有点粗鲁,但无论如何......

所以您基本上只是将旧的报告插件移动到新的 maven-site-plugin 的配置部分。

section of the maven-plugin-site 解释说,他们removed of all reporting logic from the core of Maven 是为了“将 Maven 核心与 Doxia 分离,并允许开发任意报告系统。”有道理。

【讨论】:

  • 是的,这就是为什么一切都坏了,为什么需要站点 3
【解决方案3】:

在 Maven 3 中使用站点插件 (http://maven.apache.org/plugins/maven-site-plugin/) 似乎终于得到了解决。 (非测试版)已经发布,并且在 pom.xml 声明中添加了使用第 2 版样式&lt;reporting&gt; 结构的能力。

尽管(像往常一样)难以浏览大量但无组织且重叠的关于 Maven 3 和站点插件的文档,但有一页 - http://maven.apache.org/plugins/maven-site-plugin/maven-3.html - 指出现在推荐旧样式而不是新的“站点插件”插件”样式:

注意:在 Maven 3 中,新格式不支持报告插件配置继承:请参阅 MSITE-484。这种格式在技术上是从 Maven 3 中删除报告逻辑所必​​需的,但是仍然需要向 Maven 3 添加新的继承机制以使其与旧格式一样灵活。所以新格式暂时还不能直接使用。

用于配置报告的示例页面http://maven.apache.org/plugins/maven-site-plugin/examples/configuring-reports.html 甚至没有提及“新”格式化方法。

不确定这是否是“最佳实践”形式,但以下是对我有用的示例 pom 报告部分以及一些额外的报告;根据需要选择您自己的插件。

    ...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.0</version>
          </plugin>
       </plugins>
    </build>

    <reporting>
        <plugins>

            <!-- Default Site Pages -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.4</version>
            </plugin>

            <!-- Java Documentation -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.8</version>
            </plugin>

            <!-- Source Code Cross-Reference -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.3</version>
            </plugin>
            ...
        </plugins>
    </reporting>

顺便说一句,如果您使用 Eclipse 中的 m2e 插件来编辑您的 POM,那么您可以在插件的版本部分中使用代码完成来为您提供其当前版本的列表。非常方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多