如何在site.vm中检索“ MVN网站”正在渲染的文件的名称?

时间:2019-06-24 11:32:10

标签: maven doxia

我正在创建Maven皮肤(请参见https://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/)。

如果 site.vm 是当前正在渲染的当前文件,则需要在导航栏中突出显示链接。

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

$ currentFileName $ alignedFileName 宏适用于常规文档(例如,来自Markdown的源代码)。但是对于多页文档(例如将生成Maven Report插件),这些宏会不断返回报表主页面的名称,而不是正在呈现的页面。

如何获取要渲染的文件的实际名称,而不仅仅是Maven报告插件的主要HTML页面名称?

我没有运气尝试了以下宏:

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

它们都返回相同的值,这是Maven报告插件主页的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

2 个答案:

答案 0 :(得分:1)

此问题(https://issues.apache.org/jira/browse/MSITE-842)已由OP提供的PR解决。

答案 1 :(得分:0)

这是 maven-site-plugin Maven插件(执行“ mvn网站”时运行的插件)中的错误。

该插件的3.8版已修复(在撰写本文时尚未发布)。