On 04/11/2016 04:12 PM, Martin Buchholz wrote:
On Mon, Apr 11, 2016 at 3:57 PM, Jonathan Gibbons
<[email protected]> 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

Reply via email to