Как получить имя файла, отображаемого с помощью "mvn site" в site.vm?
Я создаю Maven Skin (см. 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 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()
Во всех 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 вернет значение another-page.html.
2 ответа
Эта проблема ( https://issues.apache.org/jira/browse/MSITE-842) была решена с помощью PR, предоставленного OP.
Это была ошибка в плагине Maven -site-plugin Maven (та, которая запускается при запуске "mvn site").
Это было исправлено в версии 3.8 плагина (который еще не был выпущен на момент написания).