我正在尝试为我们的产品生成一个包含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编译这个项目,但我们可以自由使用其他构建工具。
答案 0 :(得分:5)
你可以这样做:
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的答案也是有效的方法。