This page documents all changes which affect public usage. For a complete list see JIRA project releases.

General

  • Upgrade to Java 8
  • Upgrade to Maven 3.6.3 prerequisite
  • Move to SLF4J everywhere
  • Replace Plexus Container with Sisu Shim
  • Use JSR 330 annotations instead of Plexus one
  • Partially breaking behavior to overcome 10+ years of technical debt (previous big step was the full extraction of Doxia 1.1 from Maven core in 2010, followed by a non-breaking maintenance phase for 10 years...)

Stack

The entire stack consists of multiple components which make up the entire system to produce and render documents for Maven sites and report plugins: the wider overview is available in Maven Site Plugin documentation.

Doxia 2.0.0

  • Remove Doxia Logging API (replaced by SLF4J)
  • Remove deprecated macros (SWF, SSI)
  • Remove deprecated modules:
    • old formats: Confluence, DocBook, TWiki
    • page-oriented output formats: FOP, iText, LaTeX, RTF
  • Remove deprecated code
  • Replace XHTML module with XHTML5 as default
  • Section titles (see Doxia API sectionTitle(int) API) are now converted to HTML <h1> to <h6> (Doxia API sectionTitle1() to Doxia API sectionTitle6()) for XHTML5 instead of from <h2>
  • Upgrade to Flexmark 0.62.2
  • Remove all non-HTML5 elements and attributes
  • Use id attribute for XHTML5 throughout instead of name for anchors
  • Create consistent Doxia IDs throughout based on XML id definition
  • Optionally create anchors for indexable entries (used in TOC macro)
    • The format changed compared to the IDs created by maven-fluido-skin via its AnchorJS library (using Uppercase characters as well)
  • Change notion for verbatim content
  • Correct semantics of SinkEventAttributes#BOXED with #SOURCE

  • Sink implementations must only implement overloaded Doxia 1.1/2.0 methods (taking an additional argument SinkEventAttributes). The overloaded Doxia 1.0 variants only delegate to the Doxia 1.1/2.0 equivalent as final methods in AbstractSink and therefore must no longer be implemented anywhere else ( DOXIA-709 - Getting issue details... STATUS )
  • Preformatted (verbatim) and code output is now handled by <pre>  and <pre><code> elements

Further details in Jira release notes: https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12354039&styleName=Html&projectId=12317230

Doxia Sitetools 2.0.0

  • Upgrade to Doxia 2.0.0
  • Remove DocRenderer = document-oriented rendering, leaving only SiteRenderer in place = site-oriented rendering
  • Remove deprecated code
  • Fail if deprecated ${reports}, ${parentProject} or ${modules} is found
  • Upgrade to Velocity 2.3 and Velocity Tools 3.1
  • Require a skin if a site descriptor (site.xml) has been provided
  • Don't inject bannerLeft is none is set
  • Locale must not be null
  • Deprecate and remove Google-related site descriptor properties
  • Don't create anchors behind the user's back (avoid mess and duplication)
  • Remove internal (pseudo) skin and use Maven Fluido Skin by default
  • Overhaul locale support (make Locale#ROOT instead of Locale#ENGLISH default and use full locale)
  • Don't link modules if module isn't part of the reactor or site hasn't been generated
  • Remove support for Maven 1.x style site directory layout
  • Add time zone field to site descriptor for reproducible site; defaults to Etc/UTC 
  • Replace skin and site descriptor resolution with Maven Resolver API
  • Rename RenderingContext  to DocumentRendeneringContext 
  • Rename Renderer to SiteRenderer
  • Rename Doxia Decoration Model to Maven Site Model along with package and root class
  • Transparently handle 0-byte pseudo marker site descriptors
  • Harmonize path output for rendered documents
  • Introduction of a new, more streamlined and clean up site model (old one is converted on the fly)
  • DocumentRenderer#getOutputName()has been deprecated in favor of #getOutputPath()
  • DocumentRenderingContext#getInputName()/ #getOutputName() have been deprecated in favor of #getInputPath()/#getOutputPath()
  • Velocity context properties $alignedFileName, $currentFileName, $decoration have been deprecated in favor of $alignedFilePath, $currentFilePath, $site
  • For all indexable entries anchors will be created by default
  • Add possiblity to configure parsers
  • Allow to attribute site directories for handed-edited content and generated one
  • Each document title is built from most specific to general part

Maven Reporting API 4.0.0

  • Upgrade to Doxia 2.0.0
  • Locale must not be null (use Locale#ROOT instead)
  • MavenReport#canGenerateReport() can now throw an exception

  • MavenReportRenderer#render() can now throw an exception

  • MavenReport#getOutputName() has been deprecated in favor of #getOutputPath()
  • Refined definition of runtime behavior

Maven Reporting Impl 4.0.0

  • Upgrade to Maven Reporting API 4.0.0
  • Upgrade to Doxia 2.0.0
  • Upgrade to Doxia Sitetools 2.0.0
  • Render with a skin when report plugin is run in standalone mode (defaults to Maven Fluido Skin)
  • Notify skin via Velocity context property whether running in standalone or site mode
  • Properly use SinkEventAttributes#SOURCE by providing #verbatimText() and #verbatimSource
  • Propagate ${project.build.outputTimestamp} and $publishDate
  • Remove duplicate autogenerated anchors
  • Use site decoration like Maven Site Plugin when run in standalone mode, but without navigation. Focus on report.
  • Support markdown output instead of HTML site
  • Refined definition of runtime behavior
  • Consistently log when report execution is skipped
  • The output directory properly differs when a plugin is run in standalone mode compared to site mode

Maven Reporting Exec 2.0.0

  • Upgrade to Maven Reporting API 4.0.0
  • Upgrade to Doxia 2.0.0
  • Remove usage of deprecated local repository

Maven Site Plugin 3.20.0/4.0.0

  • Upgrade to Maven Reporting API 4.0.0
  • Upgrade to Doxia 2.0.0
  • Upgrade to Doxia Sitetools 2.0.0
  • Upgrade to Maven Reporting Exec 2.0.0
  • Execute reports for all configured locales
  • Overhaul locale support (make Locale#ROOT instead of Locale#ENGLISH default and use full locale)
  • Propagate ${project.build.outputTimestamp} and $publishDate
  • Make external reports run/served with site:run
  • Reserved XML chars are properly escaped
  • Many locale awareness fixes
  • Mark several mojos as thread-safe
  • Consisntly log information what type and how many documents are rendered (include site plugin internal ones)
  • Turn sitemap into a report
  • Improve output of source/generator for site:run
  • Consistently log when report execution is skipped
  • Generate handed-edited content and generated one in one go instead of multiple runs

Note that 3.20.0 is a Doxia 2.0.0 compatible version for Maven 3.x while 4.0.0 is reserved for Maven 4. The jump to 3.20.0 is on purpose leaving a gap between 3.12.x.

Maven Fluido Skin 2.0.0

  • Upgrade to Doxia Sitetools 2.0.0
  • Reserved XML chars are properly escaped
  • Fix CSS-related issues
  • Support standalone mode
  • Improve Doxia integration
  • Rewrite skin template for new site model

Progress

Necessary changes performed at our (reporting) plugins

Format: {repository}: {branch-for-doxia-1.x}; {branch-for-doxia-2.0.0}

  • maven-help-plugin: maven-help-plugin-3.4.x; master
  • maven-project-info-reports-plugin: maven-project-info-reports-plugin-3.6.x; master
  • maven-invoker-plugin: maven-invoker-plugin-3.7.x; mater
  • maven-dependency-plugin: maven-dependency-plugin-3.7.x; master
  • maven-plugin-tools: maven-plugin-tools-3.14.x; master
  • maven-jxr: jxr-3.4.x; master
  • maven-pmd-plugin: maven-pmd-plugin-3.24.x; master
  • maven-javadoc-plugin: maven-javadoc-plugin-3.8.x; master
  • maven-checkstyle-plugin: maven-checkstyle-plugin-3.4.x; master
  • maven-surefire: surefire-3.4.x; master

Note: other reporting plugin with our group id (org.apache.maven.plugins) will not be upgraded.

Migration Notes

Reporting Plugin Maintainers

  • Sink tables must start with Sink#table() + Sink#tableRows() and end with Sink#tableRows_() + Sink#table_()
  • Runs UTs and ITs and compare HTML output with Doxia 1.x stack. If anything breaks for you, report with us.
  • Anchors must be placed before the target element
  • Make sure to take care of the signature changes in the Reporting Plugin API
  • When linking to output of other plugins you must calculate the default path to it dynamically

Skin Maintainers

  • Table border attribute is not used anymore, it has been replaced with the CSS class bodyTableBorder
  • Maven Site Model is now availabe as  $site Velocity context property

Maven Site Plugin (Reporting Plugins) Users

  • When using multiple locales, make sure that you supply default as well otherwise no root site will be generated
  • You must supply a skin if you are using a site descriptor (site.xml)
  • Use Maven Fluido Skin for custom Google-related properties
  • Local repository must be purged or at least stale site descriptors deleted (find ~/.m2/repository -name \*site\*.xml -size 0 -delete) to properly resolve remote site descriptors again (site.xml)

Open Issues/TODOs

  • Update all documentation in src/site/

Internal

Component Release Order

  • maven-doxia

  • maven-reporting-api

  • maven-doxia-sitetools

  • maven-reporting-impl

  • maven-reporting-exec

  • maven-site-plugin

  • maven-fluido-skin

Followed by the reporting plugins.

  • No labels