我写了一个自定义的Taglet的图书馆与名称开始以一个点:.codelet,.codelet.and.out,等等.它是用JDK 7编译的.
使用1.7生成JavaDoc时javadoc.exe,它工作正常.但是当使用JDK 8生成它时,它失败了,因为
C:\...\Temp.java:5: error: no tag name after @
* {@.codelet mypkg.Temp}`
Run Code Online (Sandbox Code Playgroud)
如果我使用 taglet(而不是taglet代码本身)将代码更改为{@codelet mypkg.Temp}:
C:\...\Temp.java:5: error: unknown tag: codelet
* {@codelet mypkg.Temp}
Note: Custom tags that were not seen: @.codelet
1 error
Run Code Online (Sandbox Code Playgroud)
更改taglet源代码中的名称cod.elet(code.let因为code已经存在的taglet名称不好),并使用该新名称,它可以工作.
该-tag选项的JavaDoc工具文档(在该部分的底部附近)指出:
避免冲突:如果要创建自己的命名空间,则可以使用与包用的类似的点分隔命名约定:com.mycompany.todo.Oracle将继续创建名称不包含点的标准标记.您创建的任何标记都将使用Oracle定义的相同名称覆盖标记的行为.如果创建@todo标记或标记,则它始终具有您定义的相同行为,即使Oracle稍后创建了同名的标准标记.
我在这里错过了一些东西吗?或者这是一个无证的变化,真的很糟糕?因为它需要我的库中有一个很大的变化,如果是这样的话.
仅供参考:Taglet概述文档
我正在编写一个库,它已将已经过单元测试的示例代码(其源代码,输出和任何输入文件)插入到JavaDoc中,具有许多自定义功能.使用此库的主要方法是使用内联标记,例如
{@.codelet.and.out my.package.AGreatExample}
{@.codelet my.package.AGreatExample}
{@.file.textlet examples\doc-files\an_input_file.txt}
{@.codelet.and.out my.package.AGreatExample%eliminateCommentBlocksAndPackageDecl()}
Run Code Online (Sandbox Code Playgroud)
由于自定义taglet(甚至是doclet)需要com.sun,这意味着它们不像Java本身那样跨平台.(不确定这是否相关,但单词"javadoc" - 甚至子字符串"doc" - 不在Java 8语言规范中.)
我不喜欢写一个以这种方式受限的图书馆的想法.那我该怎么办?到目前为止我的想法是这样的
com.suntaglets.但是,我将这种依赖com.sun视为"薄".也就是说,我把尽可能少的代码放在taglet类中,将大部分代码留在别处,而不依赖于com.sun.\{@\.myTagletName (.*?)\}.捕获该文本后,它与com.suntaglet中的代码几乎相同.这是一种合理的方法吗?是否有更多的跨平台javadoc/taglet解析器,所以我不必自己滚动?是否有任何类似于 taglet的跨平台?JavaDoc 本身不是跨平台,还是只是自定义taglet和doclet?
由于这个决定(使用内联标签),我想粗略地了解我有多少人从我的库中锁定了,但大多数时候我都在寻找一个长期的解决方案.
(尽管上面是我的Java 8链接,但我使用的是Java 7.)
感谢@fge的taglet建议,这比我最初的想法更优雅,并且@Michael对于不祥但有用的com.sun警告.
我正在开发一个项目,我们有一些用于修改Javadoc的自定义Taglet类(例如链接到SVN中的源代码,添加引用)等等.我们要做的一件事就是能够获取源中使用的注释并操纵它们的信息.
似乎Taglet接口不提供访问Java源代码中的注释的简单方法.有人知道这是否可能吗?
我正在使用JDK 1.5
我编写了一个自定义 Javadoc taglet,它添加了一个新note标签:
...
public boolean isInlineTag() { return false; }
public String toString(Tag tag) {
return "<pre class='note'>" + tag.text() + "</pre>";
}
Run Code Online (Sandbox Code Playgroud)
到目前为止它可以工作,但是内联标签没有扩展。这是一个评论示例:
/**
* @note Test note with {@link Someclass} // @link tag is NOT expanded
* @param name - here the {@link Someclass} works // works for standard 'param' tag
*/
Run Code Online (Sandbox Code Playgroud)
内联标签{@link}未展开。但是,它对于内置paramjavadoc 标记来说效果很好。
有没有办法在自定义 Javadoc taglet 中扩展嵌套内联标签?
谢谢!
我正在编写一个自定义JavaDoc Taglet,并希望加载并创建正在处理JavaDoc的类的实例.这是我的代码(公共类CDKIOOptionsTaglet实现Taglet):
public String toString(Tag tag) {
return "<DT><B>IO options: </B><DD>"
+ expand(tag) + "</DD>\n";
}
public String toString(Tag[] tags) {
if (tags.length == 0) {
return null;
} else {
return toString(tags[0]);
}
}
private String expand(Tag tag) {
// create a table with IOOptions
StringBuffer tableContent = new StringBuffer();
SourcePosition file = tag.position();
String pathAndFile = file.file().toString();
pathAndFile = pathAndFile.replaceAll("/", ".");
pathAndFile = pathAndFile.substring(pathAndFile.indexOf("src.main") + 9);
pathAndFile = pathAndFile.substring(0, pathAndFile.indexOf(".java"));
try {
Class ioClass = Class.forName(pathAndFile);
Object ioInstance …Run Code Online (Sandbox Code Playgroud)