首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Maven中配置Javadoc聚合

在Maven中配置Javadoc聚合
EN

Stack Overflow用户
提问于 2012-11-07 08:30:07
回答 1查看 4.1K关注 0票数 6

我正在尝试为我的项目中的所有模块创建一个聚合Javadoc站点,但我似乎无法以令人满意的方式配置插件。主要的,我似乎不能让它在检测链接和排除某些包的同时聚合javadoc。基本上,插件的配置似乎被完全忽略了。

我有一个根pom.xml,它引用了一堆子模块,并包含以下配置:

代码语言:javascript
复制
<modules>
    <module>foo</module>
    <module>bar</module>
</modules>
<build>
<plugins>
   <plugin>
       <groupId>org.maven.apache.plugins</groupId>
       <artifactId>maven-javadoc-plugin</artifactId>
       <version>2.9</version>
       <executions>
           <execution>
               <id>aggregate</id>
               <phase>site</phase>
               <goals>
                   <goal>aggregate</goal>
               </goals>
               <configuration>
                  <links>
                    <link>http://docs.oracle.com/javase/6/docs/api</link>
                    <link>http://static.netty.io/3.5/api</link>
                    <link>http://google-guice.googlecode.com/git/javadoc</link>
                    <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link>
                    <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link>
                    <link>https://developers.google.com/protocol-buffers/docs/reference/java</link>
                  </links>
                  <bootclasspath>${sun.boot.class.path}</bootclasspath>
                  <additionalJOption>-J-Xmx1024m</additionalJOption>
                  <detectJavaApiLink>true</detectJavaApiLink>
                  <detectLinks>true</detectLinks>
                  <excludePackageNames>*.testing.*</excludePackageNames>
               </configuration>
           </execution>
      </executions>
  </plugin>
</plugins>
</build>

但是,当我使用这个设置运行mvn javadoc:aggregate时,我得到的是一个javadoc站点,它没有指向任何被引用的库的链接,仍然包含所有的测试类。

我甚至没有看到插件试图下载每个声明的链接源的包列表。

另一方面,为每个单独的模块生成javadoc效果良好,符合预期。

我到底搞错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-07 18:02:18

插件配置可以放在两个层次上:在execution标签内部或外部(“全局”)。

当配置在execution标记中时,它属于那个特定的执行。在您的例子中,您必须运行mvn site才能执行它,因为它绑定到该阶段。

当使用mvn javadoc:aggregate命令时,它会查找“全局”配置。在您的pom中没有这样的配置,因此它使用默认配置。

将您的插件配置改为:

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <links>
            <link>http://docs.oracle.com/javase/7/docs/api</link>
            <link>http://static.netty.io/3.5/api</link>
            <link>http://google-guice.googlecode.com/git/javadoc</link>
            <link>http://docs.guava-libraries.googlecode.com/git-history/release/javadoc</link>
            <link>http://fasterxml.github.com/jackson-databind/javadoc/2.0.4</link>
            <link>https://developers.google.com/protocol-buffers/docs/reference/java</link>
        </links>
        <bootclasspath>${sun.boot.class.path}</bootclasspath>
        <additionalJOption>-J-Xmx1024m</additionalJOption>
        <detectJavaApiLink>true</detectJavaApiLink>
        <detectLinks>true</detectLinks>
        <excludePackageNames>*.testing.*</excludePackageNames>
    </configuration>
    <executions>
        <execution>
            <id>aggregate</id>
            <phase>site</phase>
            <goals>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

您可以在execution部件中放置一个configuration来覆盖和专门化该执行的配置。

BTW <groupId>在你的pom中是错误的。它应该是

代码语言:javascript
复制
<groupId>org.apache.maven.plugins</groupId>

而不是

代码语言:javascript
复制
<groupId>org.maven.apache.plugins</groupId>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13261571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档