blob: 383a780ef6688c8d4307cf243de05b3c739147d7 [file] [log] [blame]
------
Deploy Maven Component Reference Documentation
------
Barrie Treloar
Hervé Boutemy
------
2015-03-30
------
~~ 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
Introduction
This document gives step-by-step instructions for deploying
Maven components reference documentation inside the Maven {{{/}https://maven.apache.org/}} website.
See {{{./index.html}Maven website introduction}} for instructions on the whole website publication (main site content + components).
Overview
Since December 2012, the overall website uses svnpubsub mechanism:
[component-reference-documentation.png] Components reference documentation mechanisms overview
How components reference documentation publication works
Components don't use CMS: components reference documentation are versioned and generated from full sources, with both handwritten content (like Maven main site)
and content generated from sources (javadoc, unit-test results, integration test results...).
* Staging component reference documentation
Reference documentation of a component is staged in <<<https://maven.apache.org/xxx-archives/yyy-LATEST/>>>, where <<<yyy>>> is the
component name and <<<xxx>>> can be:
* the component type, like <<<shared>>>, <<<plugins>>>, <<<skins>>>, ... (see
{{/shared-archives/}}, {{/plugins-archives/}}, {{/pom-archives/}}, {{/skins-archives/}})
* the component name for standalone components, like <<<archetype>>>, <<<plugin-tools>>>, <<<surefire>>>, <<<wagon>>>, ...
(see {{/archetype-archives/}}, {{/archetypes-archives/}}, {{/plugin-tools-archives/}}, {{/scm-archives/}}, {{/surefire-archives/}}, {{/wagon-archives/}})
[]
To publish component reference documentation:
[[0]] prerequisite: eventually build the component if it has not been done previously, or some reports may miss build or integration information:
Notice: In cases where you have prepared a release you can simple change into <<<target/checkout>>> folder and continue with 2.
+----------+
mvn -Prun-its install
+----------+
[[1]] build the reference documentation:
+----------+
mvn -Preporting site site:stage
+----------+
Notice: <<<site:stage>>> is really necessary only for multi-modules components, but added unconditionally in these instructions
to keep them as straightforward as possible.
[[2]] stage the reference documentation to website production svn area, using
{{{/plugins/maven-scm-publish-plugin}maven-scm-publish-plugin}}: (TODO: explanations on configuration in pom to yyy-LATEST)
+----------+
mvn scm-publish:publish-scm
+----------+
svnpubsub mechanism transfers svn production content to live production site
[]
[]
<<Notice>>: content is in fact published to {{/components/}} directory,
and symbolic links declared in <<<resources/**/components.links>>> in main site source are used by Ant to
create a reference from <<</xxx>>> (= what we want to be user-visible) to <<</components/xxx>>> (what what is
checked out).
* Publishing versioned component reference documentation
When doing a release, <<<yyy-LATEST>>> content staged in previous section needs:
[[1]] to be archived to versioned directory before a newer revision is published into -LATEST,
[[2]] to replace the actual component reference documentation.
[]
This is done with operations on website production svn area: you can use
{{{./component-reference-documentation-helper.html}Component Reference Documentation Helper}} to
easily prepare svnmucc command line.
If you prefer to do everything by hand from command templates, you can do either with <<<svn>>> command:
* Unix:
+----------+
SVNPUBSUB=https://svn.apache.org/repos/asf/maven/website/components
svn cp $SVNPUBSUB/xxx-archives/yyy-LATEST $SVNPUBSUB/xxx-archives/yyy-$version -m "Archive versioned site."
svn rm $SVNPUBSUB/xxx/yyy -m "Remove old site."
svn cp $SVNPUBSUB/xxx-archives/yyy-$version $SVNPUBSUB/xxx/yyy -m "Publish new site."
+----------+
* Windows:
+----------+
set SVNPUBSUB=https://svn.apache.org/repos/asf/maven/website/components
svn cp %SVNPUBSUB%/xxx-archives/yyy-LATEST %SVNPUBSUB%/xxx-archives/yyy-$version -m "Archive versioned site."
svn rm %SVNPUBSUB%/xxx/yyy -m "Remove old site."
svn cp %SVNPUBSUB%/xxx-archives/yyy-$version %SVNPUBSUB%/xxx/yyy -m "Publish new site."
+----------+
[]
or with {{{http://svnbook.red-bean.com/en/1.8/svn.ref.svnmucc.re.html}<<<svnmucc>>> command}}:
+----------+
svnmucc -m "Publish yyy $version documentation" \
-U https://svn.apache.org/repos/asf/maven/website/components \
cp HEAD xxx-archives/yyy-LATEST xxx-archives/yyy-$version \
rm xxx/yyy \
cp HEAD xxx-archives/yyy-LATEST xxx/yyy
+----------+
* Updating index page in the Maven site
Some component types have an index page refering to each components of the same type. This is the case for
plugins (see {{{/plugins/}index}}), shared (see {{{/shared/}index}}), poms (see {{{/pom/}index}}) and
skins (see {{{/skins/}index}}).
Update the version number and release date for the component in the <<<content/apt/xxx/index.apt>>> page.
See {{{../website/deploy-maven-website.html}Deploy Maven website}} for more in-depth instructions on main
site content editing.
<<Notice>>: if you forget about updating the index page, dist-tool has a
{{{https://builds.apache.org/view/M-R/view/Maven/job/dist-tool-plugin/site/dist-tool-check-index-page.html}report run daily}}
that will gently send a failure notification on notifications@maven.a.o.