[External] : Re: external snippets

Anna Kozlova anna.kozlova at jetbrains.com
Thu Mar 24 07:16:23 UTC 2022


Jonathan,

thanks, it works with the "-sourcepath" option!

Thanks again,
Anna

P.S. It was a typo in the path, I removed too much from my real absolute
path, sorry about that

On Thu, Mar 24, 2022 at 2:23 AM Jonathan Gibbons <
jonathan.gibbons at oracle.com> wrote:

> Anna,
>
> Maybe it was a typo but that command does not correspond to the file
> layout you described earlier. The command is missing the `main/java/` part.
>
> I don't know what `project_classpath` is in your case. If it is just the
> (output) classes directory, you might try adding a sourcepath option, which
> would be something like either `-sourcepath project_name/src` or
> `-sourcepath project_name/src/main/java` depending on your layout.
>
> I'll set up locally an environment that tries to mimic your layout, and
> send you a confirmed command.  If it is the `-sourcepath` issue, that
> requirement needs to be added to the documentation.
>
> -- Jon
>
>
>  On 3/23/22 1:02 PM, Anna Kozlova wrote:
>
> Jonathan,
>
> IDEA runs javadoc tool as following
> `javadoc -d output -classpath project_classpath
> project_name/src/p/Main.java`. I can change this if I would understand what
> should be placed instead.
>
> I am sorry for not being able to understand myself
>
> Thanks,
> Anna
>
> On Wed, Mar 23, 2022 at 3:48 PM Jonathan Gibbons <
> jonathan.gibbons at oracle.com> wrote:
>
>> Anna,
>>
>> For javadoc itself, the intent is that you should not need to do anything
>> else to have javadoc detect the `snippet-files` directory and to
>> incorporate the content into the documentation.  You can verify that by
>> manually running a javadoc command on the example files you have set up.
>>
>> However, in the context of an IDE, it is important that the IDE should
>> recognize the `snippet-files` directory (and other non-identifier
>> directories) as not being part of the overall package structure. In other
>> words,
>>
>> 1) when the IDE is analyzing the code in src/main/java, and when passing
>> files to `javac` and `javadoc` it should not include files from any
>> directory that is not part of the package hierarchy ... i.e. it should not
>> include files from `snippet-files` and `doc-files` directories.
>> Note that javadoc will still look for and scan the `snippet-files`
>> subdirectory in the package for any doc comments that use snippets.
>>
>> 2) separately, to allow a user to work on snippet files, an IDE
>> could/should recognize the `snippet-files` directory as an independent
>> (nested) package root.
>>
>> -- Jon
>>
>>
>> On 3/22/22 12:07 PM, Anna Kozlova wrote:
>>
>> Hi Jonathan,
>>
>> how should IDE(A) pass the content of `snippet-files` to the
>> javadoc, javac, etc? I hope I'll be able to fix that so users will be able
>> to use the simple way of defining external snippets.
>> Thanks
>> Anna
>>
>> On Tue, Mar 22, 2022 at 3:31 PM Jonathan Gibbons <
>> jonathan.gibbons at oracle.com> wrote:
>>
>>> Anna,
>>>
>>> That is the intended structure, but my experience has been that existing
>>> releases of the IDE incorrectly pass the contents of directories like
>>> `snippet-files` as source files when compiling the primary packages and
>>> classes, meaning `p/Main.java`. This applies to any analysis of the files
>>> in the package/class hierarchy, including `javac`, `javadoc`, and tools
>>> like IDE that examine source code,
>>>
>>> Note that `snippet-files` is not a valid identifier, and so files in the
>>> `snippet-files` directory cannot be considered part of the package
>>> hierarchy rooted at `src/main/java`.    That is true for any sub-directory
>>> that is not named with a valid Java identifier.   Until this aspect of the
>>> IDE is addressed, you cannot use option 1 as I described earlier (using the
>>> local snippet-files subdirectory) and so you must use option 2 ( a separate
>>> package/class hierarchy, with the `-snippet-path` option).
>>>
>>> -- Jon
>>> On 3/22/22 6:21 AM, Anna Kozlova wrote:
>>>
>>> Hi Jonathan,
>>> I have this structure:
>>>
>>> └── src
>>>
>>>     └── main
>>>
>>>         ├── java
>>>
>>>            └── p
>>>
>>>                └── Main.java
>>>
>>>                  |── snippet-files
>>>
>>>                    └── ShowOptional.java
>>>
>>>
>>> I think that IDE passes wrong parameters to the javadoc tool though I
>>> have no idea what should be changed. E.g. if I try to generate javadoc for
>>> the whole 'p' directory, snippet-files are passed as [sources] but I have
>>> still the same error. What should be on the command line?
>>>
>>>
>>> Thanks,
>>>
>>> Anna
>>>
>>> On Mon, Mar 21, 2022 at 7:25 PM Jonathan Gibbons <
>>> jonathan.gibbons at oracle.com> wrote:
>>>
>>>> Anna,
>>>>
>>>> What is the layout for the files you are using?
>>>>
>>>> -- Jon
>>>>
>>>>
>>>> On 3/21/22 10:31 AM, Anna Kozlova wrote:
>>>>
>>>> Hi Jonathan,
>>>> thank you! Unfortunately (1) doesn't work for me, what I get with the
>>>> last available jdk 18:
>>>>
>>>> Standard Doclet version 18+36-2087
>>>> Building tree for all the packages and classes...
>>>> Generating project_name/output/p/Main.html...
>>>> project_name/src/p/Main.java:8: error: File not found: ShowOptional.java
>>>>  * {@snippet file="ShowOptional.java" region="example"}
>>>>
>>>>
>>>> where I have code from the JSR sample
>>>> package p;
>>>>
>>>> /** * {@snippet file="ShowOptional.java" region="example"} */public class Main {}
>>>>
>>>> Can it be that I need to pass javadoc tool, something which I am not aware of?
>>>>
>>>> Thanks,
>>>> Anna
>>>>
>>>>
>>>> On Mon, Mar 21, 2022 at 3:59 PM Jonathan Gibbons <
>>>> jonathan.gibbons at oracle.com> wrote:
>>>>
>>>>> Anna,
>>>>>
>>>>> Separate from whether you use `class` or `file` to identify the
>>>>> snippet, there are two locations in which you can put the files.
>>>>>
>>>>> 1. In a subdirectory named `snippet-files` of the package that
>>>>> references the snippet. In this case, you do _not_ need a `--snippet-path`
>>>>> option. In your example, this would be
>>>>> `src/main/java/p/snippet-files/Snippet.java`.  The use of a `snippet-files`
>>>>> dierctory is intended to be similar to `doc-files` to provide images or
>>>>> additional text files for documentation.
>>>>>
>>>>> 2. In an arbitrary directory (hierarchy) of your choice that is
>>>>> specified on the `--snippet-path` option. That is a path similar to a
>>>>> source path, and can contain multiple directories separated by the standard
>>>>> path separator character, if you so choose.
>>>>>
>>>>> In your example, while it is not wrong to use
>>>>> `src/main/snippet-files`, you are relying on option #2 above, which is why
>>>>> you need the `--snippet-path` option.
>>>>>
>>>>> -- Jon
>>>>>
>>>>>
>>>>> On 2/23/22 4:03 AM, Anna Kozlova wrote:
>>>>>
>>>>> Hi folks,
>>>>>
>>>>> I try to support external snippets in IntelliJ. As far as I understand
>>>>> this part of JEP 413
>>>>>
>>>>> The location of the external code can be specified either by class
>>>>> name, using the class attribute, or by a short relative file path, using
>>>>> the file attribute. In either case the file can be placed in a package
>>>>> hierarchy rooted in a snippet-files subdirectory of the directory
>>>>> containing the source code with the {@snippet ...} tag.
>>>>>
>>>>>
>>>>> I should be able to put snippet files somewhere near my code and the
>>>>> javadoc tool would find them. Unfortunately, I failed to generate javadoc
>>>>> unless I specify explicitly `--snippet-path`.
>>>>>
>>>>> I tried e.g. the following structure
>>>>>
>>>>> └── src
>>>>>     └── main
>>>>>         ├── java
>>>>>         │   └── p
>>>>>         │       └── Main.java
>>>>>         └── snippet-files
>>>>>             ├── p
>>>>>             │   └── Snippet.java
>>>>>
>>>>> Is this structure correct? Or should this `snippet-files` directory be
>>>>> explicitly added as `--snippet-path ` by the IDE/build tool and I just
>>>>> misread the JEP?
>>>>>
>>>>> Thank you,
>>>>> Anna
>>>>>
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/javadoc-dev/attachments/20220324/ab983d43/attachment-0001.htm>


More information about the javadoc-dev mailing list