best practice for including images in the javadoc headers of module descriptors

Rick Hillegas rick.hillegas at gmail.com
Wed Jan 16 00:43:11 UTC 2019


Thanks for that advice, Jon.

On 1/15/19 4:22 PM, Jonathan Gibbons wrote:
> Rick,
>
> I found your Derby documentation online with the module diagrams. Very 
> nice!
>
> I don't know how much you have looked at how we insert the module 
> diagrams into the JDK API documentation, but we do it with a custom 
> taglet, which gives us the flexibility to vary the output. For 
> example, if the images are not available, we don't generate references 
> to them. Using that sort of technique would be another way to address 
> your original question.
>
> -- Jon
>
>
> On 01/15/2019 04:10 PM, Jonathan Gibbons wrote:
>> Rick,
>>
>> There is, temporarily, an option to javadoc called 
>> --no-module-directories, which in JDK 11 will give you the same 
>> directory layout as in JDK 9.
>>
>> However, the layout in JDK 9 is bad insofar as like-named packages in 
>> different modules will overwrite each other, and so, in time, the 
>> layout in JDK 11, with an extra level of directory for the module 
>> name, will be the only supported layout.
>>
>> So, to answer your question ...
>>
>> ... short term answer, use --no-module-directories
>>
>> ... long term answer, put content for a module in the module-specific 
>> directory ... or at least, create references appropriate to that layout
>>
>>
>> Separately, FYI. I notice you are using the "border" attribute in 
>> your <img> tag, which probably implies you are using HTML 4.  If you 
>> are using the -html4 option, you should be getting a warning that 
>> support for HTML4 will be going away at some point. If you are not 
>> using the -html4 option, and are using the default (-html5), then 
>> you're probably generating bad HTML which may not pass a conformance 
>> checker and/or may not display correctly in all browsers.
>>
>> -- Jon
>>
>>
>> On 01/12/2019 09:23 AM, Rick Hillegas wrote:
>>>
>>> I would appreciate your advice about the best practice for handling 
>>> the following problem.
>>>
>>> The structure of the generated javadoc tree appears to have changed 
>>> substantially between Java 9 and Java 11. I noticed this because my 
>>> module descriptors include <img> tags, which pull corresponding 
>>> module diagrams into the module overview pages generated by javadoc. 
>>> The <img> tags have src attributes with relative file references. 
>>> Here, for instance, is the <img> tag from the javadoc header in the 
>>> Derby engine's module descriptor:
>>>
>>>   * <div style="text-align:center;">
>>>   *   <img
>>>   *     src="resources/engine.svg"
>>>   *     alt="module diagram for org.apache.derby.engine"
>>>   *     border="2"
>>>   *   />
>>>   * </div>
>>>
>>>
>>> When I build the javadoc using Java 9, browsers correctly display 
>>> the module diagrams because the module overview pages are in the 
>>> same directory as the top-level index.html. However, when I build 
>>> the javadoc using Java 11, the module overview pages live in 
>>> subdirectories of that top-level root--in this case, in the 
>>> org.apache.derby.engine subdirectory.
>>>
>>> What is the best practice for including images in module descriptor 
>>> headers so that the resulting javadoc displays correctly regardless 
>>> of whether one builds it using JDK 9 or JDK 11?
>>>
>>> Thanks,
>>> -Rick
>>>
>>
>
>



More information about the javadoc-dev mailing list