创建一个包含已编译类的jar和使用Maven的javadoc

时间:2013-02-20 19:11:46

标签: java maven jar javadoc

我正在尝试为我们的产品生成一个包含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编译这个项目,但我们可以自由使用其他构建工具。

3 个答案:

答案 0 :(得分:5)

你可以这样做:

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

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

    <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>

答案 1 :(得分:2)

你看过Assembly plugin吗?

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

幸运的是,javadoc:javadoc目标可以配置为 build 生命周期的一部分,方法是在pom.xml的{​​{1}}部分generate-sources部分配置它。 1}}阶段。这意味着生成的JavaDocs应该可用于Assembly插件。

答案 2 :(得分:0)

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

使用sources创建maven-source-plugin jar工件:

<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将具有javadoc,当然,如果您的代码中有适当的注释。

通过这种方式,您也可以正确分离工件。

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

相关问题