I’m porting a project from Maven to Gradle. The javadoc plugin needs an “-X” option passed to it. I don’t see how I can do that with the Gradle javadoc task.
The original reference in the Maven pom looks like this:
Yes, I see it, but getting this to actually work is not going to be obvious at all.
If I just do this:
addStringOption(‘Xdoclint:none’)
It doesn’t get added to the command line. I verified this with the resulting “javadoc.options” file. I then tried doing the following:
addStringOption(‘Xdoclint:none’).value = “”
This gets close, as it at least puts the option on the command line, but it actually gives the parameter a value, the empty string, so javadoc thinks that’s a package name, and barfs.
I also tried changing the empty string to “null”, but that does the same as the first, doesn’t put it on the command line.
The addStringOption('something') as no effect on the javadoc properties, while addStringOption('key', 'value') works as expected. Command line options become -key value.
Now, to add a -X option, we have to trick Gradle to make it accept our option as a key/value. But as you experienced yourself, the empty string will lead to an error. That’s why people add -quiet, this is a rather harmless option for the javadoc binary.
javadoc {
// without the -quiet option, the build fails
options.addStringOption('Xdoclint:none', '-quiet')
}
I just tested on a small project with one class with badly designed javadoc:
br tags <br/>
Text making use of < and > such as Collection<Foo>
unknown @param argument name
undefined @param argument description
with Maven and Gradle. Both break the build without appropriate configuration. Both manage to generate something with the Xdoclint:none set. Resulting html is almost the same in both case with two differences only: Maven generates link to the Java public apidoc by default, and there is an additional link in the navigation bar: “use” linking to class-use folder.
@Vampire that doesn’t seem to work for me, I get the following error:
No signature of method: org.gradle.external.javadoc.StandardJavadocDocletOptions.addStringOption() is applicable for argument types: (String, Boolean) values: [Xdoclint:none, true]
Possible solutions: addStringOption(java.lang.String), addStringOption(java.lang.String, java.lang.String), addStringsOption(java.lang.String), addStringsOption(java.lang.String, java.lang.String)