maven-javadoc-plugin icon indicating copy to clipboard operation
maven-javadoc-plugin copied to clipboard

[MJAVADOC-329] Allow generation of empty javadoc JARs

Open jfallows opened this issue 4 years ago • 2 comments

Add generateIfEmpty property to javadoc:jar goal, defaulting to false for backwards compatibility. Add testGenerateIfEmpty property to javadoc:test-jar goal for consistency, defaulting to false for backwards compatibility.

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <configuration>
                  <target>
                    <mkdir dir="${project.build.directory}/apidocs" />
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
              <sourceFileExcludes>
                <exclude>**/internal/**/*.java</exclude>
              </sourceFileExcludes>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

where no non-internal classes exist, therefore no public Javadoc is required, yet Maven Central requires inclusion of a Javadoc JAR during deployment.

This now simplifies to

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.2.1</version>
            <configuration>
              <sourceFileExcludes>
                <exclude>**/internal/**/*.java</exclude>
              </sourceFileExcludes>
              <generateIfEmpty>true</generateIfEmpty>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

Integration tests passed successfully.

[INFO] --- maven-invoker-plugin:3.2.1:verify (integration-test) @ maven-javadoc-plugin ---
[INFO] -------------------------------------------------
[INFO] Build Summary:
[INFO]   Passed: 54, Failed: 0, Errors: 0, Skipped: 17
[INFO] -------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

As ASF Committer jfallows,

Checklist

Following this checklist to help us incorporate your contribution quickly and easily:

  • [x] Make sure there is a JIRA issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a JIRA issue. Your pull request should address just this issue, without pulling in other changes.
  • [x] Each commit in the pull request should have a meaningful subject line and body.
  • [x] Format the pull request title like [MJAVADOC-XXX] - Fixes bug in ApproximateQuantiles, where you replace MJAVADOC-XXX with the appropriate JIRA issue. Best practice is to use the JIRA issue title in the pull request title and in the first line of the commit message.
  • [x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • [x] Run mvn clean verify -Prun-its to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.

If your pull request is about ~20 lines of code you don't need to sign an Individual Contributor License Agreement if you are unsure please ask on the developers list.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004 you have to acknowledge this by using the following check-box.

jfallows avatar Jan 26 '21 18:01 jfallows

that would be a useful feature

vietj avatar Oct 05 '24 16:10 vietj

I think there is a potential better way to solve this. Some plugins have a forceCreation parameter, we can leverage it here as well. I think it was maven-source-plugin.

michael-o avatar Oct 19 '24 20:10 michael-o

closing in favor of #331

elharo avatar Nov 17 '24 12:11 elharo

Resolve #640

jira-importer avatar Jun 10 '25 00:06 jira-importer