簡體   English   中英

如何在site.vm中檢索“mvn site”正在呈現的文件的名稱?

[英]How to retrieve the name of the file being rendered by "mvn site" in site.vm?

我正在創建一個 Maven 皮膚(參見https://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/ )。

如果鏈接是正在呈現的當前文件,我的site.vm需要突出顯示導航欄中的鏈接。

因此,我需要知道site.vm正在呈現的 HTML 文件的名稱。

$currentFileName$alignedFileName宏適用於常規文檔(例如,來自 Markdown 源)。 但是對於多頁文檔,就像 Maven 報告插件會生成的那樣,這些宏會不斷返回報告主頁面的名稱,而不是正在呈現的頁面。

如何檢索正在呈現的文件的實際名稱,而不僅僅是 Maven 報告插件的主 HTML 頁面的名稱?

我嘗試了以下宏但沒有運氣:

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

它們都返回相同的值,即 Maven Report 插件主頁的 HTML 文件名。

KmReference.java (Maven 報告插件,使用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()

在我的 Maven 報告插件生成的所有 HTML 文件中,我將獲得完全相同的值:

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() = .

我希望至少$alignedFileName返回值another-page.html

這個問題 ( https://issues.apache.org/jira/browse/MSITE-842 ) 已經通過 OP 提供的 PR 解決了。

這是maven-site-plugin Maven 插件(執行“mvn site”時運行的插件)中的一個錯誤。

它已在插件的 3.8 版中得到修復(在撰寫本文時尚未發布)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM