 ------
 Adding a Protocol to Deploy the Site
 ------
 Hervé Boutemy
 ------
 2011-07-24
 ------

 ~~ 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


Adding a Protocol to Deploy the Site

  Out of the box, Maven only supports <<<file:>>>, <<<http:>>>, <<<https:>>>, and <<<scp:>>> as transport protocols.

  If you try to deploy a site with an unsupported protocol, you'll get an error:

-----
[ERROR] 
Unsupported protocol: '...' for site deployment to distributionManagement.site.url=...
Currently supported protocols are: ...
    Protocols may be added through wagon providers.
    For more information, see http://maven.apache.org/plugins/maven-site-plugin/examples/adding-deploy-protocol.html
-----

  As explained in the error message, to deploy a site with a non-built-in protocol, you need to add the corresponding
  {{{/wagon/}wagon provider}}.

  You can add it either as a {{{/guides/mini/guide-using-extensions.html}global extension}},
  or declare it at as a dependency of the site plugin:

+-----+
<project>
  ...
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>${project.version}</version>
          <dependencies>
            <dependency><!-- add support for ssh/scp -->
              <groupId>org.apache.maven.wagon</groupId>
              <artifactId>wagon-ssh</artifactId>
              <version>1.0</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  ...
</project>
+-----+
