15.7.5. 在皮肤中自定义站点模板

就像你可以在Maven站点皮肤中自定义CSS一样,你也可以在其中自定义站点模板。Doxia的站点渲染工具会从皮肤JAR文件中找一个META-INF/maven/site.vm文件。为了包含一个自定义的页面模板,复制模板文件至sample-site-skin中正确的位置。将本章前面开发的自定义站点模板复制到sample-site-skin中的src/main/resources/META-INF/maven位置:

$ mv sample-project/src/site/site.vm \
    sample-site-skin/src/main/resources/META-INF/maven

如果你已经在sample-project中自定义了站点模板,删除Site插件中指向该模板的配置。Site插件会使用站点皮肤中包含的模板来渲染站点。

<plugin>
  <artifactId>maven-site-plugin</artifactId>
  <configuration>
    <templateDirectory>src/site</templateDirectory>
    <template>site.vm</template>
  </configuration>
</plugin>

Maven站点皮肤应该包含所有它依赖的资源。包括CSS,图片,以及logo。如果在本章前面你已经自定义了站点模板,且已经将默认的doxia-site-renderer资源复制到了src/site/resources目录。你需要将这些文件从sample-project项目移到新的sample-site-skin项目中,使用如下的命令:

$ cd ..
$ mkdir -p sample-site-skin/src/main/resources/css
$ mv sample-project/src/site/resources/css/maven-base.css \
    sample-site-skin/src/main/resources/css
$ mkdir -p sample-site-skin/src/main/resources/images
$ mv sample-project/src/site/resources/images/logos \
    sample-site-skin/src/main/resources/images
$ mv sample-project/src/site/resources/images/expanded.gif \
    sample-site-skin/src/main/resources/images
$ mv sample/src/site/resources/images/collapsed.gif \
    sample-site-skin/src/main/resources/images

你已经更改了sample-site-skin,因此需要安装该皮肤到本地Maven仓库。在安装好皮肤之后,重新构建sample-project web站点。你会看到新皮肤的自定义站点模板已经应用到了sample-project的web站点上。你会注意到菜单项的颜色可能会有一些不精确,因为你没有为折叠及展开菜单项添加必要的CSS。为此,如下更改src/main/resources/css/maven-theme.css

a:link {
  ...
}

li.collapsed, li.expanded, a:link {
  ...
}

重新构建皮肤,然后再次生成站点,你会看到菜单项正常显示了。你已经成功的创建了一个Maven主题,它可以用来将自定义的CSS和模板应用到一组项目中。