3

我想使用Maven为我的应用程序创建站点。这是一个多模块应用程序,父模块是简单的网站模块,第一个孩子是应用程序的核心,第二个是GUI(Swing)。使用javadocs的Maven多模块项目站点

我现在使用遵循父pom.xml的

<modules> 
    <module>core</module> 
    <module>kayako-desktop</module> 
</modules> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <locales>en</locales> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <phase>install</phase> 
        <goals> 
         <goal>aggregate</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
<reporting> 
    <plugins> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <aggregate>true</aggregate> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-changes-plugin</artifactId> 
      <version>2.4</version> 
     </plugin> 
    </plugins> 
</reporting> 

我核心的POM:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <id>attach-javadocs</id> 
        <goals> 
         <goal>jar</goal> 
         <goal>javadoc</goal> 
        </goals> 
       </execution> 

      </executions> 
     </plugin> 
    </plugins> 
</build> 
<reporting> 
    <plugins> 
     <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <links> 
        <link>http://download.oracle.com/javase/6/docs/api/</link> 
       </links>  
      </configuration> 
     </plugin>  
    </plugins> 

</reporting> 

(我去掉了从两个不相关的部分)

的问题:我想MVN site:stage,但javadoc不是从核心模块收集的。我错了什么?

+0

看到这个相关的问题:http://stackoverflow.com/questions/3404322/how-to-use-javadocaggregate-properly-in-multi-module-maven-project – 2013-03-19 05:23:58

回答

2

在父pom中配置maven-site-plugin的配置的<reportPlugins>部分中的javadoc插件。

这是我的工作。

在父POM:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <reportPlugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.9</version> 
         <reportSets> 
          <reportSet> 
           <id>aggregate</id> 
           <reports> 
            <report>aggregate</report> 
           </reports> 
          </reportSet> 
         </reportSets> 
         <configuration> 
         <!-- Here you can add special configurations for your javadoc, if needed --> 
         </configuration> 
        </plugin> 
        <!-- Here you can also configure more report plugins --> 
        <!-- for your site, such as maven-project-info-reports-plugin --> 
       </reportPlugins> 
      </configuration> 
     </plugin> 
    <!-- ... --> 
    </plugins> 
</build> 
<!-- ... --> 
<distributionManagement> 
    <site> 
     <id>website</id> 
     <url>http://site.url/can/be/tentative/or/hypothetical</url> 
    </site> 
</distributionManagement> 

在每个子多金属氧酸盐,你还可以配置网站插件的具体报告,例如,万无一失测试报告或项目信息。但是,您不需要在其中放置任何javadoc插件配置(除非您还希望为您的子模块使用非聚合的javadoc)。

然后,您应该能够从父目录中执行mvn site site:stage。要查看聚合的javadoc,请将浏览器指向该目录中的target/staging/index.html,然后单击页面左侧索引中的“Project Reports”,然后单击“JavaDocs”。

额外的小费:

有时候我想在聚合的javadoc立马而不要做一个完整的site site:stage,它做更多的东西,需要更长的时间。因此,我还直接在父pom的<plugin>部分中包含maven-javadoc插件的配置。这样,我可以运行mvn javadoc:aggregate并快速获取target/site/apidocs/index.html中的聚合javadoc。

+0

谢谢。提到的项目不再是我的项目,但我会在另一个项目中使用您的提示。而我并不知道网站:之前的舞台目标,这非常有用! – 2013-07-11 12:35:58