RFR: 8152818: Javadoc must support module options supported by javac.

Jonathan Gibbons jonathan.gibbons at oracle.com
Mon Apr 11 23:35:00 UTC 2016



On 04/11/2016 04:12 PM, Martin Buchholz wrote:
> On Mon, Apr 11, 2016 at 3:57 PM, Jonathan Gibbons
> <jonathan.gibbons at oracle.com> wrote:
>>
>> On 04/07/2016 10:04 PM, Martin Buchholz wrote:
>>> I'm not really qualified, but here are random comments:
>>>
>>> I think the general idea is right - javac and javadoc need the same
>>> kind of support for modules.
>>> I worry that details may be different, e.g. javadoc has diamond
>>> inheritance and pulls in via @{inheritDoc} part of the
>>> "implementation" from module sources.
>>
>> Can you explain this a bit more?   Is this a new problem in JDK 9,
>> with/without modules, or
>> is it a pre-existing problem with @inheritDoc ?
> This is a pre-existing difference between javadoc and javac.  javadoc
> has always had diamond inheritance to support @{inheritDoc}.  (Maybe
> javac now also has it to support default methods.)
>
>>> It would be nice if there was a working sample javadoc command line
>>> for jsr166 CVS.
>>
>> What would you want to be the goal of such a command line?  Would it be to
>> just
>> document the jsr166 classes, or would you want to generate the JavaSE docs
>> including the latest jsr166 sources?
> I maintain the javadoc invocations in
> http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/build.xml?view=markup
> that generate
> http://gee.cs.oswego.edu/dl/jsr166/dist/docs/
> which contains only the javadoc for files in jsr166 CVS.
> I'm unsure how we are supposed to generate this in a jigsaw world.
> These files are destined to become part of java.base, and they
> @{inheritDoc} strings out of java.base sources, but they are also
> independent software artifacts.
>
> It doesn't quite fit into jigsaw.  How do you generate javadoc for a
> module subset that lives in a separate source tree?


Right now, because you want to "{@inheritDoc} strings out of java.base 
sources",
you would have to put much of the jdk/src repo on the module source 
path, with
your repo in front.     I see you're already doing something like that 
in the following
lines:

     <javadoc destdir="${docs.dir}"
              packagenames="none"
              link="${java9.api.url}"
              overview="${src.dir}/intro.html"
              access="${build.javadoc.access}"
              sourcepath="${src.dir}:${jdk9.src.dir}"
              classpath=""
              executable="${javadoc9}">

but now you need to be using -modulesourcepath, which is (regrettably) a 
more
complex option, since javac and javadoc have to be able to isolate the 
module
name in the filename paths.   Obviously, the jdk9/jdk9/jdk repo has its 
source
organized in a modular layout, but to change to using -modulesourcepath, 
your own
${src.dir} would have follow the same general rules, which in the 
simplest case
reduces to having a module name (e.g. java.base) above the sources for the
packages in that module, e.g.    /path/to/java.base/java/util/*.java



More information about the javadoc-dev mailing list