Maven 3:为定义的工件生成Javadoc

时间:2011-02-09 15:54:41

标签: maven javadoc maven-3 maven-javadoc-plugin

我想在专用的docs项目中为我项目的某些工件生成javadoc。

这意味着我希望有一个名为“docs”的独立项目。在docs / pom.xml中,我想定义应该包含在生成的javadoc中的工件。

到目前为止,我了解到我必须为要包含的项目生成单独的sources.jar。但我无法弄清楚如何从那里开始。

现在我只能想象两种方法:

  1. 获取我要包含的工件(sources.jar),解压缩它们并以某种方式将Javadoc插件指向源目录。

  2. 将我感兴趣的工件定义为依赖项,并使用javadoc-plugin的“dependencySourceInclude”选项。但我不确定这是否符合预期用途。

  3. 有任何建议如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

我找到了自己的解决方案。这有点像黑客但它对我有用。我选择了第一个想法:

  

获取我要包含的工件(sources.jar),解压缩它们并以某种方式将javadoc插件指向源目录。

这个解决方案有四个不同的部分,我将在后面详细解释:

  1. 在我想要包含的所有工件中生成sources.jars
  2. 解压缩这些sources.jars
  3. 通过将javadoc-plugin指向解压缩的源
  4. 来生成Javadoc
  5. 将生成的apidoc打包为zip文件
  6. 现在更详细:

    <强> 1。在我想要包含的所有工件中生成sources.jars

    要生成sources.jars,您必须使用maven-sources-plugin,如下所示:

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.1.2</version>
          <executions>
            <execution>
              <id>bundle-sources</id>
              <phase>package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    

    您必须在要包含在apidocs中的每个项目/模块/工件中执行此操作。

    <强> 2。解压缩这些sources.jars

    在pom.xml中,您使用生成javadocs来添加以下插件来解压缩sources.jar文件。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>unpack-artifact-sources</id>
          <phase>generate-resources</phase>
          <goals>
            <goal>unpack</goal>
          </goals>
          <configuration>
            <artifactItems>
              <artifactItem>
                <groupId>${project.groupId}</groupId>
                <artifactId><!-- your artifact here --></artifactId>
                <version>${project.version}</version>
                <classifier>sources</classifier>
                <overWrite>true</overWrite>
              </artifactItem>
            </artifactItems>
            <outputDirectory>${project.build.directory}/unpack_sources</outputDirectory>
          </configuration>
        </execution>
        <!-- add more unpack-executions here -->
      </executions>
    </plugin>
    

    您可以根据需要添加任意数量的解包执行块。

    第3。通过将javadoc-plugin指向解压缩的源来生成Javadoc

    现在是棘手的部分。让javadoc-plugin知道在哪里查找源文件。导入的定义是<sourcepath>定义。在本节中,我们定义了在步骤2中解压缩源的文件夹。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.7</version>
      <configuration>
        <sourcepath>${project.build.directory}/unpack_sources</sourcepath>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>javadoc</goal>
          </goals>
          <phase>process-resources</phase>
        </execution>
      </executions>
    </plugin>
    

    此时拨打mvn clean install时,最终会在site文件夹中找到target文件夹。在此站点文件夹中,您将找到您的apidocs。但是为了使这个构建完全闪亮,我们希望将apidocs组装成一个zip存档。

    <强> 4。将生成的apidocs打包为zip文件

    要组装文档,您必须使用maven-assembly-plugin和一个额外的程序集文件。 首先是你的pom中的插件定义:

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <executions>
        <execution>
          <id>docs-assembly</id>
          <phase>package</phase>
          <configuration>
            <appendAssemblyId>false</appendAssemblyId>
            <descriptors>
              <descriptor>src/main/assembly/assemble.xml</descriptor>
            </descriptors>
          </configuration>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    

    assemble.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly>
      <id>${project.build.finalName}</id>
      <formats>
        <format>zip</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <fileSets>
        <fileSet>
          <directory>target/site/apidocs</directory>
          <outputDirectory>/</outputDirectory>
        </fileSet>
      </fileSets>
    </assembly>