使用 Javadoc -link 选项链接到 javadoc.io

2022-09-04 08:46:09

我正在尝试使用该选项链接到 javadoc.io 托管的一些Javadocs(特别是PowerMock的Javadocs)。我试图将PowerMock的Javadocs的URL添加到我的标志中,但无法让Javadoc识别它。我正在使用指向其他Javadocs的外部链接(例如Guava,Java SE 7),并将Gradle作为我的构建系统。我尝试了以下选项:@link-link

-link http://static.javadoc.io/org.powermock/powermock-core/1.6.3/

^ 我已确认此目录中有一个文件package-list

-link http://static.javadoc.io/org.powermock/powermock-core/

-link http://javadoc.io/doc/org.powermock/powermock-core/1.6.3/

-link http://javadoc.io/doc/org.powermock/powermock-core/

所有这些都会导致以下错误(URL 相应地更改):

javadoc: warning - Error fetching URL: http://static.javadoc.io/org.powermock/powermock-core/1.6.3/

有没有人对如何使它工作有建议?

据我所知,这是某种 javadoc.io 特定问题,尽管可能是我这边的使用问题 - 例如,我目前正在使用没有问题,但不起作用。-link http://junit.org/javadoc/latest/-link http://static.javadoc.io/junit/junit/4.12/


答案 1

在命令行中,使用类似 .-J-Dhttp.agent=javadoc

在 Maven 中,使用如下内容:

<additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin-${pom‌​.name}</additionalJO‌​ption>

背景:正如Danilo Pianini在另一个答案中建议的那样,问题在于标题。但是,问题不是的;它是默认的Java User-Agent,看起来像“”:User-AgentUser-AgentJava/1.8.0_112

$ URL=https://static.javadoc.io/org.checkerframework/checker-qual/2.2.2/package-list

# default Java User-Agent:
$ wget -U Java/1.8.0_112 "$URL" 2>&1 | grep response
HTTP request sent, awaiting response... 403 Forbidden

# no User-Agent:
$ wget -U '' "$URL" 2>&1 | grep response
HTTP request sent, awaiting response... 200 OK

# custom User-Agent:
$ wget -U javadoc "$URL" 2>&1 | grep response
HTTP request sent, awaiting response... 200 OK

因此,修复方法是告诉Javadoc使用不同的.Java 不允许您省略 ,因此您必须提供一个值,Java 会将其附加到其默认代理程序之前。User-AgentUser-Agent

据我所知,阻止Javadoc不是故意的:Javadoc只是(可能不明智地)使用默认的Java,以及默认使用块的内容交付网络。User-Agentjavadoc.io

(关于 Maven 的另一个注意事项:使用 .如果您下载文件并告诉Javadoc从磁盘读取它,它也可以正常工作。但是,如果您使用但告诉Javadoc从URL中获取(这是一件不寻常的事情),它可能会失败。问题:Maven 尝试预先验证文件,但在某些版本的 Java 下,由于它拒绝了 的 SSL 证书而失败,Javadoc 本身接受的证书。-link-linkofflinepackage-list-linkofflinepackage-listjavadoc.iopackage-listjavadoc.io

(哦,使用来自 的 URL 似乎很重要,而不是 。另外,我建议不要,以防有一天开始发出重定向到,因为Javadoc目前不处理这样的重定向。另外,是一件好事:))static.javadoc.iojavadoc.iohttpshttphttp://static.javadoc.iohttps://static.javadoc.iohttps


答案 2

这很奇怪:我可以在浏览器中看到例如 http://static.javadoc.io/org.pegdown/pegdown/1.6.0/package-list 但是当我添加为javadoc的选项时,它说http://static.javadoc.io/org.pegdown/pegdown/1.6.0link

抓取网址时出错:http://static.javadoc.io/org.pegdown/pegdown/1.6.0/package-list

我使用下一个解决方法:

  1. 使用 unapack 实现所需依赖项的 javadoc。maven-dependency-plugin
  2. 将其与选项链接。linkoffline

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
            <execution>
                <id>unpack-javadoc</id>
                <phase>package</phase>
                <goals>
                    <goal>unpack</goal>
                </goals>
                <configuration>
                    <artifactItems>
                        <artifactItem>
                            <groupId>org.pegdown</groupId>
                            <artifactId>pegdown</artifactId>
                            <classifier>javadoc</classifier>
                            <version>${pegdownVersion}</version>
                            <overWrite>false</overWrite>
                            <outputDirectory>${project.build.directory}/pegdown-javadoc</outputDirectory>
                        </artifactItem>
                    </artifactItems>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
            <links>
                <link>http://www.slf4j.org/apidocs/</link>
            </links>
            <offlineLinks>
                <offlineLink>
                    <url>http://static.javadoc.io/org.pegdown/pegdown/${pegdownVersion}</url>
                    <location>${project.build.directory}/pegdown-javadoc</location>
                </offlineLink>
            </offlineLinks>
        </configuration>
    </plugin>
    

推荐