Maven javadoc Search 重定向至 “/undefined/..” url

2022-09-02 01:10:02

我已经使用javadoc maven插件3.0.1和Java 9生成了javadoc。但是,当我使用新的搜索功能并选择一个类时,它会重定向到“找不到文件”...

在网址中有(例如“../target/site/apidocs/undefined/com/mycompany/MyClass.html“),如果删除,将正确加载页面。undefined

你能帮我正确的配置来生成java doc(摆脱这个),所以搜索功能加载html页面很好吗?undefined

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>${version.maven-javadoc-plugin}</version>
        <executions>
            <execution>
                <id>javadoc</id>
                <goals>
                    <goal>javadoc</goal>
                </goals>
                <phase>prepare-package</phase>
                <configuration>
                    <doclint>none</doclint>
                    <dependencySourceIncludes>
                       <dependencySourceInclude>com.some:some</dependencySourceInclude>
                    </dependencySourceIncludes>
                    <doctitle>Title - ${project.version}</doctitle>
                    <includeDependencySources>true</includeDependencySources>
                    <windowtitle>Title</windowtitle>
                </configuration>
            </execution>
        </executions>


答案 1

借助 java doc maven 插件配置中的以下选项,可以做到这一点

<additionalJOption>--no-module-directories</additionalJOption>

答案 2

这有点黑客攻击,但正如@Martin Goik在他的答案中提到的那样,由于缺少模块名称,指定断开任何指向标准类的外部链接。正如OP在注释中提到的,生成模块名称的是什么。因此,经过一番挖掘,我发现可以通过将其附加到末尾来解决此问题:--no-module-directoriesgetURLPrefix(ui)search.jssearch.js

getURLPrefix = function(ui) {
    return "";
};

这基本上覆盖了无论如何都返回空字符串的定义。由于它只需要附加到文件的末尾,因此通过代码或命令使用任何构建工具进行自动化应该足够容易。getURLPrefix

例如,如果您使用的是 Gradle,则可以将以下内容添加到:build.gradle

// Needed to fix Javadoc search
// See comments below
final JAVADOC_FIX_SEARCH_STR = '\n\n' +
'getURLPrefix = function(ui) {\n' +
'    return \'\';\n' +
'};\n'

tasks.withType(Javadoc) {
    // Link to external docs
    options.with {
        // Example: Java 11 API documentation
        links 'https://docs.oracle.com/en/java/javase/11/docs/api/'
    }

    doLast {
        // Append the fix to the file
        def searchScript = new File(destinationDir.getAbsolutePath() + '/search.js')
        searchScript.append JAVADOC_FIX_SEARCH_STR
    }
}

推荐