Maven网站生成器(Maven 3)生成空的站点文件夹。

11

我正在尝试使用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>

奇怪,没有输出。当我检查target/site时,它是空的。唯一的文件夹是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中不会失败?


不知道这会不会对你有所帮助,但我在3.0版本中也遇到了同样的问题,后来发现这是一个Maven的问题。最终我也没能成功生成网站。 - digitaljoel
2
请查看 https://cwiki.apache.org/MAVEN/maven-3x-and-site-plugin.html,看看是否有帮助。 - Raghuram
@Raghuram 这几天我认为你提供的关于Maven 3和站点插件的链接详细信息在这个页面上:http://maven.apache.org/plugins/maven-site-plugin/maven-3.html - Crowie
3个回答

12
也许你可以尝试使用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”版本的插件会让我感到不舒服。 - Jesse
如果我使用Maven 2,这会出问题吗?我在2.2.1和3.0.1之间迁移。 - TheLQ
1
@TheLQ。是的。此插件版本需要Maven 3。 - Raghuram
这在Maven 3中可以工作。我想我只能使用它了。感谢您的帮助。 - TheLQ
2
如果你想让它在Maven 2和3中都能工作(这是我与CI服务器合作的要求),你需要将它放在一个配置文件中。我发现这个激活部分似乎可以给出可行的结果:<activation><file><exists>${basedir}</exists></file></activation> - Donal Fellows
@Jesse 一个让你感到不爽的演示是尝试理解这个页面,它在后来的版本中有所改变。似乎在beta版之后有些变化。 - Crowie

8

我也遇到了同样的问题。我找到了一篇关于这个话题的博客文章

引用该博客(重点是我的):

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

忽略旧的<reporting>而没有任何有关其已被弃用的警告似乎有点粗鲁,但无论如何......

因此,您基本上只需将旧的报告插件移动到新maven-site-plugin的配置部分即可。

Maven插件站点的部分 解释说他们从Maven核心中移除了所有报告逻辑,以“将Maven核心与Doxia解耦并允许开发任意报告系统”。有道理。

是的,这就是为什么一切都崩溃了,以及为什么需要第三个站点的原因。 - TheLQ

7
使用 Maven 3 的站点插件 ( http://maven.apache.org/plugins/maven-site-plugin/ ) 终于得到解决。已发布了(非 beta)版本,并且在 pom.xml 声明中添加了使用版本 2 样式的 <reporting> 结构的能力。
尽管通常很难浏览有关 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文件,则可以在插件的版本部分使用代码补全功能,以提供其当前版本的列表。非常方便。

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