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.gibb...@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.gibb...@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.gibb...@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