Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javadoc link to src/main/resource or src/test/resource file using relative path

I would find it extremely useful if there was a way to put a link in javadoc to a standard resource file that resides in src/main/resources or src/test/resources so that another coder could quickly navigate to the resource file (in this case a JSON file) in IntelliJ.

These files are used in unit tests and need to be modified often as the schema changes.

The answer here Link to text file (resource) in Javadoc does not help as an absolute path would be too fragile.

Is there a way to do the same thing as @see with resources? Something specific to IntelliJ would be great if javadoc itself falls short.

like image 832
Novaterata Avatar asked May 04 '17 02:05

Novaterata


3 Answers

Not quite an answer but a feature of IDE:

If you use Intellij IDEA, it is possible out-of-the-box. Where you load the file you must specify the path, right? So you Ctrl+click on a path and Intellij just brings you to the file.

The path is relative to the classpath so you have portability.

It requires all the team members to use Intellij, yes, not a global solution, not a "literal" solution.

Check this:

enter image description here

like image 120
WesternGun Avatar answered Oct 06 '22 00:10

WesternGun


No need to mention the absolute path. See my package and class structure below. From a sister package if I follow the URI rules I do a .. to go one folder back and mention it like this. It works! On clicking the url the file opens. Although I have illustrated this in eclipse, I think this should be IDE agnostic.

/**
 * Removes all the stop words like a, for, the etc. from the text. For a
 * full list of stop words check
 * <a href="file:../resources/stopWords.txt">/resources/stopWords.txt</a>
 * 
 * @return String free of all the stop-words
 * @param text
 *            The string to be cleaned, do null check at your end
 */

enter image description here

Package Structure

like image 6
absin Avatar answered Oct 05 '22 22:10

absin


This makes a clickable link in IntelliJ IDEA, but only to a directory :-/.

src/test/resources/some/path/

/**
 * {@link some.path}
 */

It doesn't work if you add a filename.ext, nor if a directory is an illegal package name (e.g.: starts with a number).

So far this is best I found. Not great, but still handy to hint static files usage (like external API responses) and provide a link to their location, in tests I found.

like image 2
Julien Avatar answered Oct 05 '22 22:10

Julien