| ----- |
| Introduction |
| ----- |
| Hervé Boutemy |
| Dennis Lundberg |
| ------ |
| 2015-12-20 |
| ------ |
| |
| ~~ Licensed to the Apache Software Foundation (ASF) under one |
| ~~ or more contributor license agreements. See the NOTICE file |
| ~~ distributed with this work for additional information |
| ~~ regarding copyright ownership. The ASF licenses this file |
| ~~ to you under the Apache License, Version 2.0 (the |
| ~~ "License"); you may not use this file except in compliance |
| ~~ with the License. You may obtain a copy of the License at |
| ~~ |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~~ |
| ~~ Unless required by applicable law or agreed to in writing, |
| ~~ software distributed under the License is distributed on an |
| ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~~ KIND, either express or implied. See the License for the |
| ~~ specific language governing permissions and limitations |
| ~~ under the License. |
| |
| ~~ NOTE: For help with the syntax of this file, see: |
| ~~ http://maven.apache.org/doxia/references/apt-format.html |
| |
| Doxia Sitetools - Site Renderer |
| |
| The Site Renderer handles the rendering of sites, assembling a common site template (also called <a skin>) |
| with a collection of documents. |
| |
| Documents can be dynamically generated with {{{/doxia/doxia/doxia-sink-api/}Doxia Sink API}}, like Maven reports, |
| or simply read from static files written in {{{/doxia/references/index.html}markup supported by Doxia Parsers}}, |
| eventually processed by {{{https://velocity.apache.org/engine/${velocityEngineVersion}/}Velocity}} |
| if their file names end in <<<.vm>>>. |
| |
| [doxia-site-renderer.png] |
| |
| * Doxia Site Skins |
| |
| A default site template is included (see <<<default-site.vm>>>), but other templates can be used at will, |
| either as a standalone template or packaged in a {{{../doxia-skin-model/}<<skin>> artifact}}. |
| |
| Maven team provides {{{/skins/}a collection of skins}} for projects use. |
| |
| Some documentation is available on {{{/plugins/maven-site-plugin/examples/creatingskins.html}how to create a new skin}}. |
| |
| * Velocity processing |
| |
| Site and documents with file names ending in <<<.vm>>> are processed by Velocity. |
| |
| The Velocity context contains some variables related to rendering context that you can use: |
| |
| *---------------------------------+----------------------+-------------------------------+ |
| || Variable || Type || Description || |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<alignedFileName>>> | <<<String>>> | The file name of the (HTML) document being rendered, relative to the document being rendered. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<decoration>>> | {{{../doxia-site-model/apidocs/org/apache/maven/doxia/site/SiteModel.html}<<<SiteModel>>>}} | <<Deprecated>>}: use <<<site>>>. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<currentFileName>>> | <<<String>>> | The file name of the (HTML) document being rendered, relative to the site root. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<doxiaSiteRendererVersion>>> | <<<String>>> | The version of the Doxia Site Renderer in use. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<locale>>> | <<<Locale>>> | The locale for the document being rendered. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<publishDate>>> | <<<Date>>> | An optional hardcoded publish date that has been set programmatically. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<relativePath>>> | <<<String>>> | The path to the site root from the document being rendered. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<site>>> | {{{../doxia-site-model/apidocs/org/apache/maven/doxia/site/SiteModel.html}<<<SiteModel>>>}} | This is a model that represents the data in your {{{../doxia-site-model/site.html}<<<site.xml>>>}}. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<supportedLocales>>> | <<<List\<Locale\>>>> | The list of locales that the site will contain. | |
| *---------------------------------+----------------------+-------------------------------+ |
| |
| There are also some tools for general use: |
| |
| #set( $plexus = "https://codehaus-plexus.github.io/plexus-utils/apidocs/org/codehaus/plexus/util" ) |
| *---------------------------------+------------------------------------------------------+-------------------------------+ |
| || Variable || Type || Description || |
| *---------------------------------+------------------------------------------------------+-------------------------------+ |
| | <<<PathTool>>> | {{{$plexus/PathTool.html}<<<PathTool>>>}} | | |
| *---------------------------------+------------------------------------------------------+-------------------------------+ |
| | <<<StringUtils>>> | {{{$plexus/StringUtils.html}<<<StringUtils>>>}} | | |
| *---------------------------------+------------------------------------------------------+-------------------------------+ |
| | <<<plexus>>> | {{{https://github.com/eclipse/sisu.plexus/blob/master/org.eclipse.sisu.plexus/src/org/codehaus/plexus/PlexusContainer.java}<<<PlexusContainer>>>}} | | |
| *---------------------------------+------------------------------------------------------+-------------------------------+ |
| |
| Additionally, there are {{{https://velocity.apache.org/tools/${velocityToolsVersion}/tools-summary.html} Velocity Generic Tools}} populated |
| with the site locale, the site model's date format, and site renderer's resource bundle: |
| |
| #set( $generic = "https://velocity.apache.org/tools/${velocityToolsVersion}/tools-summary.html" ) |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| || Variable || Type || Description || |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<alternator>>> | {{{$generic${esc.hash}deprecated-tools}AlternatorTool}} | {{{$generic${esc.hash}deprecated-tools}<<Deprecated>>}}: use CSS3 nth-child(even/odd) selectors or ${esc.hash}if($foreach.index % 2). For creating alternators to easily alternate over a set of values. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<class>>> | {{{$generic${esc.hash}ClassTool}ClassTool}} | For simplifying reflective lookup of information about classes and their fields, methods and constructors. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<context>>> | {{{$generic${esc.hash}ContextTool}ContextTool}} | For convenient access to context data and metadata. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<convert>>> | {{{$generic${esc.hash}deprecated-tools}ConversionTool}} | {{{$generic${esc.hash}deprecated-tools}<<Deprecated>>}}: use NumberTool for numbers formatting/parsing, DateTool for date/time formatting/parsing, or CollectionTool for toStrings(). For converting String values to richer object Types. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<date>>> | {{{$generic${esc.hash}ComparisonDateTool}ComparisonDateTool}} | For manipulating, formatting, and comparing dates. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<display>>> | {{{$generic${esc.hash}DisplayTool}DisplayTool}} | For controlling display of references (e.g., truncating values, "pretty printing" lists, and displaying alternates when a reference is null). |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<esc>>> | {{{$generic${esc.hash}EscapeTool}EscapeTool}} | For common escaping needs in Velocity templates (e.g. escaping html, xml, javascript etc.). |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<field>>> | {{{$generic${esc.hash}FieldTool}FieldTool}} | For (easy) access to static fields in a class, such as string constants. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<link>>> | {{{$generic${esc.hash}LinkTool}LinkTool}} | For creating and manipulating URIs and URLs. The API for this tool is designed to closely resemble that of the VelocityView tool of the same name. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<loop>>> | {{{$generic${esc.hash}LoopTool}LoopTool}} | A convenience tool to use with <<<${esc.hash}foreach>>> loops. It wraps a list with a custom iterator to provide greater control, allowing loops to end early, skip ahead and more. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<math>>> | {{{$generic${esc.hash}MathTool}MathTool}} | For performing math functions. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<number>>> | {{{$generic${esc.hash}NumberTool}NumberTool}} | For formatting and converting numbers. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<render>>> | {{{$generic${esc.hash}RenderTool}RenderTool}} | To evaluate and render arbitrary strings of VTL, including recursive rendering. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<text>>> | {{{$generic${esc.hash}ResourceTool}ResourceTool}} | For simplified access to resource bundles for internationalization or other dynamic content needs. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<sorter>>> | {{{$generic${esc.hash}deprecated-tools}SortTool}} | {{{$generic${esc.hash}deprecated-tools}<<Deprecated>>}}: use CollectionTool sort methods. Used to sort collections (or arrays, iterators, etc) on any arbitary set of properties exposed by the objects contained within the collection. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| | <<<xml>>> | {{{$generic${esc.hash}XmlTool}XmlTool}} | For reading/navigating XML files. This uses dom4j under the covers and provides complete XPath support. |
| *------------------+---------------------------------------------------------------+-------------------------------+ |
| |
| If you intend to use custom Velocity tools, add them to the Maven Site Plugin's dependency list and make sure |
| that they have a bundled configuration file in <<</META-INF/maven/site-tools.xml>>>. |
| |
| See <<<{{{./xref/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.html${esc.hash}L483}DefaultSiteRenderer.createToolManagedVelocityContext(...)}}>>> |
| source for more details and the {{{https://velocity.apache.org/tools/devel/tools-summary.html}tools usage summary}}. |
| |
| ** Maven Site Plugin |
| |
| When <<<doxia-site-renderer>>> is used by <<<maven-site-plugin>>>, the following template properties are defined: |
| |
| *---------------------------------+----------------------+-------------------------------+ |
| || Variable || Type || Description || |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<inputEncoding>>> | <<<String>>> | | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<outputEncoding>>> | <<<String>>> | | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<project>>> | {{{/ref/current/maven-core/apidocs/org/apache/maven/project/MavenProject.html}<<<MavenProject>>>}} | The current project. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <project properties> | <<<String>>> | Properties defined in POM are directly available. | |
| *---------------------------------+----------------------+-------------------------------+ |
| |
| See <<<{{{/plugins/maven-site-plugin/apidocs/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.html${esc.hash}createSiteRenderingContext(java.util.Locale)}AbstractSiteRenderingMojo.createSiteRenderingContext(...)}}>>> |
| source for more details. |
| |
| ** Site Template |
| |
| When Velocity is processing the site template (be it from skin or local template), there are a few complementary variables |
| available that give access to information taken from document being merged into the template: |
| |
| *---------------------------------+----------------------+-------------------------------+ |
| || Variable || Type || Description || |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<authors>>> | <<<List\<String\>>>> | A list of authors from the source document. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<bodyContent>>> | <<<String>>> | HTML body content of the Doxia generated output. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<documentDate>>> | <<<String>>> | The date specified in the source document: semantics has to be chosen by document writer (document creation date, or document last modification date, or ...), and format is not enforced. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<headContent>>> | <<<String>>> | HTML head content of the Doxia generated output. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<shortTitle>>> | <<<String>>> | The title of the document, excluding the project or site name. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<title>>> | <<<String>>> | The title of the document, including the project or site name. | |
| *---------------------------------+----------------------+-------------------------------+ |
| | <<<docRenderingContext>>> | {{{./apidocs/org/apache/maven/doxia/siterenderer/RenderingContext.html}<<<RenderingContext>>>}} | (since 1.8) The document rendering context. | |
| *---------------------------------+----------------------+-------------------------------+ |
| |
| See <<<{{{./xref/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.html${esc.hash}L616}DefaultSiteRenderer.createSiteTemplateVelocityContext(...)}}>>> |
| source for more details. |