Как получить имя файла, отображаемого с помощью "mvn site" в site.vm? - PullRequest
2 голосов
/ 24 июня 2019

Я создаю скин Maven (см. https://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/).

Мой site.vm должен выделить ссылки в навигационной панели, если ссылка является текущим файлом

Поэтому мне нужно знать имя HTML-файла, который site.vm отображает.

$ currentFileName и $ alignFileName макросы прекрасно работают для обычных документов (например, из источника Markdown). Но для многостраничных документов, например, для создания плагина Maven Report, эти макросы продолжают возвращать имя главной страницы отчета,а не отображаемой страницы.

Как получить действительное имя отображаемого файла, а не только имя главной HTML-страницы плагина Maven Report?

Я попробовалследующие неудачные макросы:

  • $alignedFileName
  • $currentFileName
  • $docRenderingContext.getInputName()
  • $docRenderingContext.getOutputName()

Все они возвращают одно и то же значение, которое является именем файла HTML главной страницы Maven Re.Плагин порта.

KmReference.java (Плагин Maven Report, создание нескольких страниц с помощью getSinkFactory (). createSink (outputDirectory, pageFilename) ):

public class KmReference extends AbstractMavenReport {

    public String getOutputName() {
        return "km-reference";
    }

…

    @Override
    protected void executeReport(Locale locale) throws MavenReportException {

…

            // Create a new sink!
            Sink kmSink;
            try {
                kmSink = getSinkFactory().createSink(outputDirectory, pageFilename);
            } catch (IOException e) {
                throw new MavenReportException("Could not create sink for " + pageFilename + " in " + outputDirectory.getAbsolutePath(), e);
            }

site.vm (скорость):

alignedFileName = $alignedFileName

currentFileName = $currentFileName

getDoxiaSourcePath() = $docRenderingContext.getDoxiaSourcePath()

getGenerator() = $docRenderingContext.getGenerator()

getInputName() = $docRenderingContext.getInputName()

getOutputName() = $docRenderingContext.getOutputName()

getParserId() = $docRenderingContext.getParserId()

getRelativePath() = $docRenderingContext.getRelativePath()

Во всех HTML-файлах, сгенерированных моим плагином Maven Report, я получу точно такие же значения:

another-page.html (не km-reference.html):

alignedFileName = km-reference.html

currentFileName = km-reference.html

getDoxiaSourcePath() = $docRenderingContext.getDoxiaSourcePath()

getGenerator() = com.sentrysoftware.maven:patrolreport-maven-plugin:2.0:km-reference

getInputName() = km-reference.html

getOutputName() = km-reference.html

getParserId() = $docRenderingContext.getParserId()

getRelativePath() = .

Я ожидаю, что по крайней мере $ alignFileName вернет значение другой-page.html .

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Эта проблема (https://issues.apache.org/jira/browse/MSITE-842) была решена с помощью PR, предоставленного OP.

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

Это была ошибка в maven-site-plugin Плагин Maven (тот, который запускается при запуске "mvn site").

Это было исправлено в версии 3.8 плагина (который еще не был выпущен на момент написания).

...