Changes for git publish
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..c7367ee
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,82 @@
+Archiva Redback Documentation - Component Documentation
+=======================================================
+:toc:
+
+
+== How to build and publish the pages for the archiva web content
+
+This module and the children contain web content and project reports that can be published to the 
+archiva web site: https://archiva.apache.org
+
+The web content parts of this module and submodules are published to the path 
+
+  /redback/components/
+
+=== Use the script
+
+There is a shell script +deploySite.sh+ which you can run to generate the site check and publish to 
+the remote repository. It works only on Linux, on other platforms you have to go the next section.
+
+The script is interactive, it asks you to confirm the publish after generation of the staging part.
+
+.Execute
+
+  ./deploySite.sh 
+
+All arguments are appended to the mvn calls.
+
+=== Run the mvn steps manually
+
+==== Building the pages
+
+You need enough free disk space to publish the web content. The archiva web site repository is big, 
+but the maven build will only checkout the necessary directories for this build (sparse checkout).
+
+For all the commands you have to change to this site directory:
+
+  cd redback-components/site
+
+.The following creates the site to the staging folder
+
+  mvn clean site 
+  mvn site:stage
+
+The result can be checked in 
+
+  site/target/staging/redback/components/
+
+with your browser.
+
+If you would like the use a local checkout of the archiva-web-content.git repository and not push directly
+to the remote repository, you may add this parameter:
+
+  -DsiteRepositoryUrl=scm:git:file:///${path-to-your-local-archiva}/archiva-web-content.git
+
+where +${path-to-your-local-archiva}+ is the path where a bare clone of the archiva-web-content.git is stored.
+
+NOTE: You cannot use +mvn site:run+ because this will place the submodules into the same folder and 
+      overwrite each other.
+
+==== Publish the pages
+
+.This command publishes to the git repository
+
+  mvn scm-publish:publish-scm
+
+After publishing to the git repository the gitpubsub mechanism is transferring it to the HTTP server.
+
+If you would like the use a local checkout of the archiva-web-content.git repository and not push directly
+to the remote repository, you may add this parameter:
+
+  -DsiteRepositoryUrl=scm:git:file:///${path-to-your-local-archiva}/archiva-web-content.git
+
+
+=== Some notes about the build process
+
+A sparse checkout of the git repository will be created in 
+
+ .site-content
+
+but only, if the directory +.site-content/.git+ does not exist. 
+
+
diff --git a/checkoutSite.sh b/checkoutSite.sh
new file mode 100755
index 0000000..5e582bd
--- /dev/null
+++ b/checkoutSite.sh
@@ -0,0 +1,135 @@
+#!/bin/bash
+#
+#  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.
+#
+#  Author: Martin Stockhammer <martin_s@apache.org>
+#  Date:   2018-11-03
+#
+# This script runs a sparse git clone of a remote repository and
+# initializes the git configuration.
+#
+# It is mainly used for site content creation, because the main archiva-web-content repository
+# is rather large and we don't want to checkout the complete data.
+#
+
+SITE_DIR=".site-content"
+GIT_REMOTE=""
+
+GIT_USER=$(git config user.name)
+GIT_EMAIL=$(git config user.email)
+
+GIT_PATTERN_FILE="git-sparse-checkout-pattern"
+GIT_PATTERN_DEST=".git/info/sparse-checkout"
+
+MY_PWD=$(pwd)
+
+CLONE=1
+FORCE=1
+MODULE_DIR="${MY_PWD}"
+PATTERN=""
+while [ ! -z "$1" ]; do
+  case "$1" in
+    -f) 
+      FORCE=0
+      shift
+      ;;
+    -d)
+      shift
+      SITE_DIR="$1"
+      shift
+      ;;
+    -p)
+      shift
+      if [ -z "${PATTERN}" ]; then
+        PATTERN="${1}"
+      else
+        PATTERN="${PATTERN}\n${1}"
+      fi
+      shift
+      ;;
+    -m)
+      shift
+      MODULE_DIR="$1"
+      shift
+      ;;
+    *)
+      GIT_REMOTE="$1"
+      shift
+      ;; 
+  esac
+done
+
+print_usage() {
+  echo "checkoutRepo [-m MODULE_DIR] [-d SITE_DIR]  [-f] GIT_URL"
+  echo " -m: The module directory where the pattern file can be found and the site dir will be created."
+  echo " -d SITE_DIR: Use the given directory for checkout"
+  echo " -f: Force clone, even if directory exists"
+}
+
+if [ ! -f "${MODULE_DIR}/pom.xml" ]; then
+  echo "Looks like the working directory is not a valid dir. No pom.xml found."
+  exit 1
+fi
+
+cd "${MODULE_DIR}" || { echo "Could not change to module directory ${MODULE_DIR}"; exit 1; }
+
+if [ -z "$GIT_REMOTE" ]; then
+  print_usage
+  exit 1
+fi
+
+if [ "${GIT_REMOTE:0:8}" == "scm:git:" ]; then
+  GIT_REMOTE="${GIT_REMOTE:8}"
+fi
+
+
+if [ -d "${SITE_DIR}" ]; then
+  if [ ! -d "${SITE_DIR}/.git" ]; then
+    echo "Directory ${SITE_DIR} exist already, but is not a git clone. Aborting."
+    exit 1
+  elif [ "$FORCE" -eq 0 ]; then
+    CLONE=0
+  fi
+else
+  CLONE=0
+fi
+
+if [ $CLONE -eq 0 ]; then
+  git clone "${GIT_REMOTE}" "${SITE_DIR}" --no-checkout
+  if [ $? -ne 0 ]; then
+    echo "Git clone failed"
+    exit 1
+  fi
+fi
+
+cd "${SITE_DIR}" || { echo "Could not change to site dir ${SITE_DIR}"; exit 1; }
+
+git config core.sparsecheckout true
+git config user.name "${GIT_USER}"
+git config user.email "${GIT_EMAIL}"
+
+if [ ! -z "${PATTERN}" ]; then
+    echo -e "${PATTERN}" >"${GIT_PATTERN_DEST}"
+elif [ -f "../${GIT_PATTERN_FILE}" ]; then
+  cp "../${GIT_PATTERN_FILE}" "${GIT_PATTERN_DEST}"
+fi
+
+git checkout --
+
+cd "${MY_PWD}"
+
diff --git a/deploySite.sh b/deploySite.sh
new file mode 100755
index 0000000..7faf9ce
--- /dev/null
+++ b/deploySite.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+#
+#  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.
+#
+#  Author: Martin Stockhammer <martin_s@apache.org>
+#  Date:   2018-11-15
+#
+#  Publishes the site content and generated reports to the web content repository.
+#  It stops after the staging and let you check the content before pushing to the repository
+#
+
+THIS_DIR=$(dirname $0)
+THIS_DIR=$(readlink -f ${THIS_DIR})
+CONTENT_DIR=".site-content"
+
+SUB_DIR="redback/components"
+
+if [ -d "${CONTENT_DIR}/.git" ]; then
+  git -C "${CONTENT_DIR}" fetch origin
+  git -C "${CONTENT_DIR}" reset --hard origin/master
+fi
+
+echo ">>>> Creating site and reports <<<<" 
+mvn clean site "$@"
+mvn site:stage "$@"
+
+echo "*****************************************"
+echo ">>>> Finished the site stage process <<<<"
+echo "> You can check the content in the folder target/staging or by opening the following url"
+echo "> file://${THIS_DIR}/target/staging/${SUB_DIR}/index.html"
+echo "> "
+echo "> If everything is fine enter yes. After that the publish process will be started."
+echo -n "Do you want to publish (yes/no)? "
+read ANSWER
+
+if [ "${ANSWER}" == "yes" -o "${ANSWER}" == "YES" ]; then
+  echo "> Starting publish process"
+  mvn scm-publish:publish-scm "$@"
+else
+  echo "> Aborting now"
+  echo "> Running git reset in .site-content directory" 
+  git -C "${CONTENT_DIR}" fetch origin
+  git -C "${CONTENT_DIR}" reset --hard origin/master
+  echo ">>>> Finished <<<<"
+fi
+
diff --git a/git-sparse-checkout-pattern b/git-sparse-checkout-pattern
new file mode 100644
index 0000000..b24177f
--- /dev/null
+++ b/git-sparse-checkout-pattern
@@ -0,0 +1 @@
+/redback/components
diff --git a/pom.xml b/pom.xml
index d8a86fd..b4bdfe3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,8 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.archiva.redback.components</groupId>
   <artifactId>redback-components-site</artifactId>
@@ -26,29 +27,31 @@
   <name>Apache Archiva Redback Components Site</name>
 
   <parent>
-  	<groupId>org.apache.archiva.redback.components</groupId>
-  	<artifactId>redback-components</artifactId>
-  	<version>2.5-SNAPSHOT</version>
+    <groupId>org.apache.archiva.redback.components</groupId>
+    <artifactId>redback-components</artifactId>
+    <version>2.5-SNAPSHOT</version>
   </parent>
 
   <description>Utilities component used by Archiva.</description>
   <url>${webUrl}/site</url>
 
   <properties>
-    <scmPubCheckoutDirectory>.site-content</scmPubCheckoutDirectory>
-    <scmTryUpdate>true</scmTryUpdate>
+    <scmPubCheckoutDirectory>${basedir}/.site-content</scmPubCheckoutDirectory>
+    <!-- The git repository, where the site content is placed -->
+    <siteRepositoryUrl>scm:git:https://gitbox.apache.org/repos/asf/archiva-web-content-INVALID.git</siteRepositoryUrl>
+    <site.staging.base>${project.basedir}</site.staging.base>
   </properties>
 
   <distributionManagement>
     <site>
       <id>apache.website</id>
-      <url>${siteUrl}/</url>
+      <url>${siteRepositoryUrl}</url>
     </site>
   </distributionManagement>
 
   <modules>
-    <module>../spring-cache</module>
     <module>../expression-evaluator</module>
+    <module>../spring-cache</module>
     <module>../spring-quartz</module>
     <module>../spring-registry</module>
     <module>../spring-taskqueue</module>
@@ -56,39 +59,51 @@
     <module>../spring-utils</module>
     <module>../redback-features</module>
     <module>../modello-plugins</module>
+
   </modules>
   <build>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
+        <artifactId>maven-scm-publish-plugin</artifactId>
         <inherited>false</inherited>
         <configuration>
-          <skip>true</skip>
+          <checkinComment>Apache Redback Components docs for version ${project.version}</checkinComment>
+          <skipDeletedFiles>true</skipDeletedFiles>
+          <content>${project.build.directory}/staging</content>
+          <tryUpdate>true</tryUpdate>
+          <!--
+                    <ignorePathsToDelete>
+                      <path>%regex[^(?!docs/).*$]</path>
+                    </ignorePathsToDelete>
+          -->
         </configuration>
+        <executions>
+          <execution>
+            <id>scm-publish</id>
+            <phase>site-deploy</phase>
+            <goals>
+              <goal>publish-scm</goal>
+            </goals>
+          </execution>
+        </executions>
       </plugin>
+
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-scm-publish-plugin</artifactId>
+        <artifactId>maven-site-plugin</artifactId>
         <configuration>
-          <checkinComment>Apache Redback Components site deployment</checkinComment>
-          <tryUpdate>${scmTryUpdate}</tryUpdate>
-          <content>${project.build.directory}/staging</content>
-          <pubScmUrl>${siteUrl}</pubScmUrl>
-          <ignorePathsToDelete>
-            <ignorePathToDelete>expression-evaluator**</ignorePathToDelete>
-            <ignorePathToDelete>modello-plugins**</ignorePathToDelete>
-            <ignorePathToDelete>redback-components**</ignorePathToDelete>
-            <ignorePathToDelete>redback-features**</ignorePathToDelete>
-            <ignorePathToDelete>spring-apacheds**</ignorePathToDelete>
-            <ignorePathToDelete>spring-cache**</ignorePathToDelete>
-            <ignorePathToDelete>spring-jdo2**</ignorePathToDelete>
-            <ignorePathToDelete>spring-quartz**</ignorePathToDelete>
-            <ignorePathToDelete>spring-registry**</ignorePathToDelete>
-            <ignorePathToDelete>spring-taskqueue**</ignorePathToDelete>
-            <ignorePathToDelete>spring-utils**</ignorePathToDelete>
-          </ignorePathsToDelete>
+          <skipDeploy>true</skipDeploy>
+          <stagingDirectory>${site.staging.base}/target/staging/redback/components/</stagingDirectory>
         </configuration>
+        <executions>
+          <execution>
+            <id>attach-descriptor</id>
+            <goals>
+              <goal>attach-descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
       </plugin>
     </plugins>
   </build>
@@ -117,4 +132,49 @@
       </plugin>
     </plugins>
   </reporting>
+
+
+  <profiles>
+    <!--
+  This runs a sparse git checkout for the web site content repository that contains only the doc directory.
+  The profile is activated only, if the checkout directory does not exist.
+  The executor runs a shell script.
+  -->
+    <profile>
+      <id>site-checkout</id>
+      <activation>
+        <file>
+          <missing>${scmPubCheckoutDirectory}</missing>
+        </file>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <version>1.6.0</version>
+            <inherited>false</inherited>
+            <executions>
+              <execution>
+                <id>prepare-checkout</id>
+                <phase>pre-site</phase>
+                <goals>
+                  <goal>exec</goal>
+                </goals>
+                <configuration>
+                  <executable>checkoutSite.sh</executable>
+                  <workingDirectory>${project.basedir}</workingDirectory>
+                  <arguments>
+                    <argument>-d</argument>
+                    <argument>${scmPubCheckoutDirectory}</argument>
+                    <argument>${siteRepositoryUrl}</argument>
+                  </arguments>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>