 ------
 Maven Site Plugin History
 ------
 Hervé Boutemy
 ------
 2018-01-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


Maven Site Plugin History

* Overview

 Maven Site Plugin uses:

  * {{{/doxia/}Doxia}} to parse {{{/doxia/references/}many markup languages}} then render HTML: see
  {{{./examples/creating-content.html}Creating Content}} documentation for mode details (particularly which markups
  are enabled by default in maven-site-plugin and how to add one),
  
  * {{{/doxia/doxia-sitetools/doxia-site-renderer/}Doxia Sitetools - Site Renderer}} to integrate document content into
  a template packaged as a skin: see {{{./examples/creatingskins.html}Creating Skins}} documentation for more details,

  * {{{/shared/maven-reporting-exec/}Maven Reporting Executor}} to manage reports execution (since Maven 3; reports execution
  was managed by Maven itself in Maven 2: see old {{{https://maven.apache.org/plugins-archives/maven-site-plugin-3.9.0/maven-3.html}Using maven-site-plugin with Maven3}} documentation for
  more details).

  []

[developer-overview.png] Developer Overview

* Maven Site Plugin vs Doxia vs Doxia Sitetools

  Given this layered approach, rendering issues reported to {{{https://issues.apache.org/jira/projects/MSITE}MSITE Maven Site Plugin issue tracker}}
  are often translated to {{{https://issues.apache.org/jira/projects/DOXIA}Doxia}} or
  {{{https://issues.apache.org/jira/projects/DOXIASITETOOLS}Doxia Sitetools}}, and issues fixed in
  Doxia or Doxia Sitetools benefit to maven-site-plugin once dependency is upgraded.
  
  Knowing which version of
  maven-site-plugin uses which version of Doxia or Doxia Sitetools is useful to choose to which version to upgrade
  maven-site-plugin to benefit from a fix.
  
*-----------------*--------------------*--------*------------------*--------------------*---------------*
|| relelease date || maven-site-plugin || {{{/doxia/}Doxia}} || {{{/doxia/doxia-sitetools/}Doxia Sitetools}} || {{{/shared/maven-reporting-exec/}Maven Reporting Executor}} || Comment 
*-----------------*--------------------*--------*------------------*--------------------*---------------*
|                 | 3.10.0             | 1.10   | 1.10             | 1.5.1              |
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2020-06         | 3.9.1              | 1.9.1  | 1.9.2            | 1.5.1              |
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2020-03         | 3.9.0              | 1.9.1  | 1.9.2            | 1.4                | Drop Maven 2 support
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2019-07         | 3.8.2              | 1.9    | 1.9.1            | 1.4                | addition of confluence/docbook/twiki support by default
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2018-04         | 3.7.1              | 1.8    | 1.8.1            | 1.4                |
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2017-12-31      | 3.7                | 1.8    | 1.8              | 1.4                | Markdown parser/HTML renderer {{{/doxia/doxia/doxia-modules/doxia-module-markdown/}changed}}
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2016-11-17      | 3.6                | 1.7    | 1.7.4            | 1.3
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2016-04-15      | 3.5.1              | 1.7    | 1.7.1            | 1.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2016-02-19      | 3.5                | 1.7    | 1.7              | 1.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2014-07-07      | 3.4                | 1.6    | 1.6              | 1.2                | Reports inherit configuration from pluginManagement
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2013-05-13      | 3.3                | 1.4    | 1.4              | 1.1                | addition of Markdown support by default in maven-site-plugin
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2012-10-14      | 3.2                | 1.3    | 1.3              | 1.0.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2012-04-30      | 3.1                | 1.3    | 1.3              | 1.0.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2011-08-02      | 3.0                | 1.2    | 1.2              | 1.0.1              | first maven-site-plugin that renders reports with Maven 3
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2012-04-26      | 2.4                | 1.3    | 1.3
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2011-05-23      | 2.3                | 1.2    | 1.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2010-11-28      | 2.2                | 1.1.4  | 1.1.4
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2010-06-04      | 2.1.1              | 1.1.3  | 1.1.3
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2009-12-21      | 2.1                | 1.1.2  | 1.1.2
*-----------------*--------------------*--------*------------------*--------------------*---------------*
| 2009-03-11      | 2.0                | 1.0    | 1.0
*-----------------*--------------------*--------*------------------*--------------------*---------------*
