10

我正在尝试为我们的产品生成一个包含 API SDK 的 jar 文件,以便我们的客户可以创建插件并针对我们的 API 进行编译。我们作为 API SDK jar 的一部分提供的所有类/接口也包含在我们的主要产品中,因此 API 开发人员不需要将我们的 API SDK jar 包含到他们的插件 jar 中。因此,我不担心我们的 API SDK jar 的大小。但是,我想让插件开发人员的生活更轻松,并且只提供一个包含已编译类和 javadoc 的 jar 文件(这样开发人员可以在开发时将内联注释视为自动完成功能的一部分)。

我们使用 Maven 编译,我在 API SDK pom.xml 中添加了以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这可行,但是这会生成两个 jar 文件 - 一个带有已编译的类,一个带有 javadoc。相反,我想只生成一个包含所有内容的 jar 文件。

我们目前使用 Maven 来编译这个项目,但是我们可以自由地使用其他构建工具。

4

3 回答 3

5

你可以这样做 :

  • 将 javadoc 目标附加到准备包
  • 将 javadoc 输出目录指定为 target/classes

jar 插件将创建一个 jar,其中包含目标/类中的所有内容(包括生成的 javadocs)

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>javadoc</goal>
                    </goals>
                    <configuration>
                        <reportOutputDirectory>${project.build.directory}/classes/</reportOutputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2013-02-20T21:12:20.600 回答
2

你看过组装插件吗?

Assembly 插件可以创建一个 jar 格式的程序集(实际上是一个带有 MANIFEST.MF 文件的 zip 格式的程序集)。您可以在程序集中同时指定classes目录和apidocs目录。把一个 MANIFEST.MF 放在那里,你就完成了。

幸运的是,可以通过在阶段的部分中将javadoc:javadoc目标配置为构建生命周期的一部分。这意味着生成的 JavaDocs 应该可用于 Assembly 插件。<build>pom.xmlgenerate-sources

于 2013-02-20T21:03:05.840 回答
1

好吧,事实上,事情实际上可以以更简单的方式完成。

使用以下命令创建sourcesjar 工件maven-source-plugin

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

这样,您的项目会将源代码部署到您的工件存储库。

然后在您的 IDE 的 Maven 配置中,您可以简单地打开源工件的下载,这实际上意味着您的 IDE 将具有 javadocs,当然,如果您的代码中有适当的注释。

这样,您也可以正确分离工件。

除此之外,David W. 和 ben75 的回答也是有效的方法。

于 2013-02-21T10:16:26.120 回答