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

Mis*_*sky 10 java javadoc jar maven

我正在尝试为我们的产品生成一个包含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>
Run Code Online (Sandbox Code Playgroud)

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

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

ben*_*n75 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>
Run Code Online (Sandbox Code Playgroud)