Maven Wagon SCM Usage

You need to add some extensions to your pom:

and use URLs in the SCM format.

For non-subversion SCM, you can include the elements scmVersionType and scmVersion in your settings.xml file to specify a branch or tag to use. The value of scmVersionType must be one of branch or tag. There is no default value for scmVersionType so you MUST specify it with scmVersion in order to have any effect.

Deploying your Maven site to SCM

There are some shortcomings to simply using Wagon SCM provider with site plugin:

  • generated site may have inconsistent newlines (see MSITE-121), preventing SCM check-in,
  • deploying site to SCM will require obsolete pages deletion, which is not done,
  • site plugin way make one commit per file.

Prefer maven-scm-publish-plugin to publish your site to SCM

Note for Maven 3 users: The site plugin behaves differently, require these be added as dependencies instead of extensions. See Adding a Protocol to Deploy the Site.

Deploying your Maven site to Subversion

Add the following extensions to your pom and use a wagon-scm url in the distributionManagement site url.

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-scm</artifactId>
        <version>3.3.4</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-manager-plexus</artifactId>
        <version>1.11.1</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-provider-svnexe</artifactId>
        <version>1.11.1</version>
      </extension>
    </extensions>
  </build>
  <distributionManagement>
    <site>
      <id>my.svn.server</id>
      <url>scm:svn:https://username@svn.apache.org/svn/root/module</url>
    </site>
  </distributionManagement>

Deploying your Maven site to CVS

Same as before, but changing svnexe to cvsexe and using a CVS svn url.

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-scm</artifactId>
        <version>3.3.4</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-manager-plexus</artifactId>
        <version>1.11.1</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-provider-cvsexe</artifactId>
        <version>1.11.1</version>
      </extension>
    </extensions>
  </build>
  <distributionManagement>
    <site>
      <id>my.cvs.server</id>
      <url>scm:cvs:ext:username@cvs.apache.org:/cvs/root:module</url>
    </site>
  </distributionManagement>

Deploying your Maven site to GitHub's gh-pages

Same as before, but changing svnexe to gitexe and using a Git svn url.

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-scm</artifactId>
        <version>3.3.4</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-manager-plexus</artifactId>
        <version>1.11.1</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-provider-gitexe</artifactId>
        <version>1.11.1</version>
      </extension>
    </extensions>
  </build>
  <distributionManagement>
    <site>
      <id>my.git.server</id>
      <url>scm:git:ssh://git@github.com/myuser/myproject.git</url>
    </site>
  </distributionManagement>
  <!-- if the extension mecanism do not work, use plugin dependency instead -->
  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>${maven-site-plugin.version}</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.doxia</groupId>
                <artifactId>doxia-module-markdown</artifactId>
                <version>1.11.1</version>
               </dependency>
            <dependency>
                <groupId>org.apache.maven.scm</groupId>
                <artifactId>maven-scm-provider-gitexe</artifactId>
                <version>1.11.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-scm</artifactId>
                <version>1.11.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.scm</groupId>
                <artifactId>maven-scm-manager-plexus</artifactId>
                <version>1.11.1</version>
            </dependency>
        </dependencies>
  </plugin>

And in your settings.xml file:

  <server>
    <id>my.git.server</id>
    <username>git</username>
    <configuration>
        <scmVersionType>branch</scmVersionType>
        <scmVersion>gh-pages</scmVersion>
    </configuration>
  </server>

Using a SCM-based remote repository in Maven 2

Using a Subversion-based remote repository in Maven 2

Not tested yet

Using a CVS-based remote repository in Maven 2

Not tested yet