首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用maven-javadoc-plugin,如何加载taglet引用中包含的类?

使用maven-javadoc-plugin,如何加载taglet引用中包含的类?
EN

Stack Overflow用户
提问于 2017-07-17 19:05:31
回答 1查看 147关注 0票数 0

我已经开发了一个定制的javadoc,它通过API使用反射来获取标签中引用的类的信息。它用"Class.forName(String)“加载类。

我能够让它在标记本身的项目中工作,甚至到了使用"ToolProvider.getSystemDocumentationTool()“运行集成测试并验证结果内容的程度。

我现在已经在我们的nexus服务器上安装了这个工件,并且我试图从一个用Maven和maven-javadoc-plugin构建的类中引用它。

当我第一次运行在"Foo.java“中引用我的标记的构建时,我在标记代码中看到了一个ClassNotFound异常,说它找不到指定的类。

这告诉我,它正在进入我的taglet代码,但是它无法加载所讨论的类的类文件。这有点讽刺,因为它可以通过查找和解析与类关联的源文件来实现。

于是,我编辑了maven-javadoc-plugin配置,添加了一个"additionalDependencies“块,指定了包含引用标记的类文件的工件。

我还设置了"verbose“标志,并且在结果输出中,当它打印"search path for class files”时,我在列表末尾找到了有问题的类的工件jar。

然而,我仍然会发现错误。

这里还会有什么问题吗?

以下是一些相关代码的摘录:

代码语言:javascript
复制
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.4</version>
            <configuration>
                <verbose>true</verbose>
                <additionalDependencies>
                    <additionalDependency>
                        <groupId>our.group.id</groupId>
                        <artifactId>our.artifact.id</artifactId>
                        <version>${current.pom.version}</version>
                    </additionalDependency>
                </additionalDependencies>
                <additionalparam>-Xdoclint:none</additionalparam>
                <taglets>
                    <taglet>
                        <tagletClass>packagepath.taglet.ValidationConstraintsTaglet</tagletClass>
                    </taglet>
                    <taglet>
                        <tagletClass>packagepath.taglet.ValidationConstraintsCombinedTaglet</tagletClass>
                    </taglet>
                </taglets>
                <tagletArtifact>
                    <groupId>our.group.id.taglets</groupId>
                    <artifactId>validationJavadocTaglet</artifactId>
                    <version>0.0.1-SNAPSHOT</version>
                </tagletArtifact>
            </configuration>
            <executions>
                <execution>
                    <id>module-javadoc-jar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <show>protected</show>
                        <detectLinks>false</detectLinks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

下面是Taglet类中显示包含类的加载的代码的一部分:

代码语言:javascript
复制
@Override
public String toString(Tag tag) {
    String  className   = tag.holder().toString();

    StringBuilder   sb  = new StringBuilder();
    sb.append("<dt><b>Validation Constraints</b></dt>");
    sb.append("<dd>");
    sb.append("<table border=1><thead><tr><th>Property</th><th>Message</th></tr></thead>");
    sb.append("<tbody>");

    try {
        Class<?>    clazz   = Class.forName(className);

当我运行构建时,我看到了以下输出:

代码语言:javascript
复制
Generating C:\...\...\target\apidocs\help-doc.html...
[done in 2593 ms]
[WARNING] Javadoc Warnings
[WARNING] java.lang.ClassNotFoundException: ...Foo
[WARNING] at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[WARNING] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[WARNING] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[WARNING] at java.lang.Class.forName0(Native Method)
[WARNING] at java.lang.Class.forName(Class.java:264)
[WARNING] at ....taglet.ValidationConstraintsTaglet.toString(ValidationConstraintsTaglet.java:69)

我注意到输出中的下面一行(详细是打开的):

代码语言:javascript
复制
[search path for class files: C:\Program Files\Java\jdk1.8.0_102\jre\lib\resources.jar,...,C:\...\our.artifact.id\target\our.artifact.id-2.7.0-SNAPSHOT.jar]

在列表的末尾,我检查了jar,并验证了所讨论的类在那里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 15:49:16

我决定添加一个"additionalDependency“似乎没有什么我能看到的。

真正重要的是,我没想到的是将依赖添加为另一个"tagletArtifact“。我想,如果您考虑一下,这是标签所需要的依赖项。当我为POM本身正在产生的工件添加GAV时,这终于起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45151820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档