如何检索 "mvn site" 在 site.vm 中呈现的文件的名称?
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 需要在导航栏中突出显示 link 如果 link 是当前正在呈现的文件。
因此我需要知道 site.vm 正在呈现的 HTML 文件的名称。
$currentFileName 和 $alignedFileName 宏对常规文档(例如来自 Markdown 源)工作得很好。但是对于多页文档,比如 Maven Report 插件会生成,这些宏保留 returning 报告主页的名称,而不是正在呈现的页面。
如何检索正在呈现的文件的实际名称,而不仅仅是 Maven 报告插件的 HTML 主页面的名称?
我尝试了以下宏但没有成功:
$alignedFileName
$currentFileName
$docRenderingContext.getInputName()
$docRenderingContext.getOutputName()
它们都是return相同的值,即HTMLMaven Report插件主页的文件名。
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()
在我的 Maven 报告插件生成的所有 HTML 文件中,我将得到完全相同的值:
另一个-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 到 return 值 another-page.html.
此问题 (https://issues.apache.org/jira/browse/MSITE-842) 已通过 OP 提供的 PR 解决。
这是 maven-site-plugin Maven 插件(当您执行 "mvn site" 时运行的插件)中的错误。
它已在插件的 3.8 版中修复(在撰写本文时尚未发布)。
我正在创建 Maven 皮肤(参见 https://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/)。
我的 site.vm 需要在导航栏中突出显示 link 如果 link 是当前正在呈现的文件。
因此我需要知道 site.vm 正在呈现的 HTML 文件的名称。
$currentFileName 和 $alignedFileName 宏对常规文档(例如来自 Markdown 源)工作得很好。但是对于多页文档,比如 Maven Report 插件会生成,这些宏保留 returning 报告主页的名称,而不是正在呈现的页面。
如何检索正在呈现的文件的实际名称,而不仅仅是 Maven 报告插件的 HTML 主页面的名称?
我尝试了以下宏但没有成功:
$alignedFileName
$currentFileName
$docRenderingContext.getInputName()
$docRenderingContext.getOutputName()
它们都是return相同的值,即HTMLMaven Report插件主页的文件名。
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()
在我的 Maven 报告插件生成的所有 HTML 文件中,我将得到完全相同的值:
另一个-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 到 return 值 another-page.html.
此问题 (https://issues.apache.org/jira/browse/MSITE-842) 已通过 OP 提供的 PR 解决。
这是 maven-site-plugin Maven 插件(当您执行 "mvn site" 时运行的插件)中的错误。
它已在插件的 3.8 版中修复(在撰写本文时尚未发布)。