Maven javadoc Search перенаправляет на URL-адрес "/ undefined / .." - PullRequest
0 голосов
/ 14 сентября 2018

Я сгенерировал javadoc с помощью плагина javadoc maven 3.0.1 и Java 9. Однако, когда я использую новую возможность поиска и выбираю класс, он перенаправляет на «Файл не найден» ...

Тамв URL-адресе undefined (например, "../target/site/apidocs/undefined/com/mycompany/MyClass.html"), который при удалении загружает страницу правильно.

Не могли бы вы помочьмне с правильной конфигурацией для создания документа Java (избавиться от этого undefined), поэтому возможность поиска загрузить HTML-страницу в порядке?

<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>

Ответы [ 4 ]

0 голосов
/ 31 июля 2019

Каждый .html файл, сгенерированный Javadoc, содержит следующее определение переменной:

var useModuleDirectories = true;

, которое влияет на поведение функции getURLPrefix() в search.js:

function getURLPrefix(ui) {
    var urlPrefix="";
    if (useModuleDirectories) {
        ...
    }
    return urlPrefix;
}

Поэтому мы можем обойти эту проблему, переопределив значение useModuleDirectories с помощью false, что возможно, указав следующий тег сценария в опции -bottom:

<script>
if (typeof useModuleDirectories !== 'undefined') {
  useModuleDirectories = false;
}
</script>

Обратите внимание, что вы должныукажите также параметр --allow-script-in-comments, чтобы Javadoc не жаловался на использование тегов <script/> в комментариях.

0 голосов
/ 31 мая 2019

Это действительно разрешает ссылку «Поиск» на проблему ../ undefined / .... Однако есть неприятный побочный эффект: ссылки на стандартные классы или интерфейсы, например, https://docs.oracle.com/en/java/javase/12/docs/api/ ... будет повреждено из-за отсутствующих имен модулей.

Рассмотрим, например, ссылки на java.lang.String теперь неправильно указывают на https://docs.oracle.com/en/java/javase/12/docs/api/java/lang/String.html, а не на https://docs.oracle.com/en/java/javase/12/docs/api/ java.base /java/lang/String.html.

0 голосов
/ 18 июня 2019

Это что-то вроде хака, но, как @ Martin Goik упомянул в свой ответ , указав --no-module-directories, разрывает любые внешние ссылки на стандартные классы из-за отсутствия имен модулей , Как упомянул OP в комментарии, getURLPrefix(ui) из search.js - это то, что генерирует имена модулей. Поэтому, покопавшись, я обнаружил, что проблему можно решить, добавив ее в конец search.js:

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

, который по существу перезаписывает определение getURLPrefix, чтобы вернуть пустую строку, несмотря ни на что. Поскольку его нужно добавить только в конец файла, его достаточно легко автоматизировать с помощью любого инструмента сборки с помощью кода или команды.

0 голосов
/ 02 октября 2018

Получил эту работу с помощью следующей опции в конфигурации плагина java doc maven

<additionalJOption>--no-module-directories</additionalJOption>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...