diff --git a/src/it/with-svnjava-maven-2.x/invoker.properties b/src/it/with-svnjava-maven-2.x/invoker.properties
new file mode 100644
index 0000000..4684641
--- /dev/null
+++ b/src/it/with-svnjava-maven-2.x/invoker.properties
@@ -0,0 +1 @@
+invoker.maven.version = 2.0+
diff --git a/src/it/with-svnjava-maven-2.x/pom.xml b/src/it/with-svnjava-maven-2.x/pom.xml
new file mode 100644
index 0000000..528bad9
--- /dev/null
+++ b/src/it/with-svnjava-maven-2.x/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<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.maven.plugins.changelog</groupId>
+  <artifactId>minimal-pom</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+
+  <url>http://maven.apache.org/</url>
+
+  <scm>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-changelog-plugin/</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-changelog-plugin/</developerConnection>
+    <url>http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changelog-plugin/</url>
+  </scm>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
+        <artifactId>maven-scm-provider-svnjava</artifactId>
+        <version>1.13</version>
+      </extension>
+    </extensions>
+
+    <plugins>
+      <plugin>
+        <artifactId>maven-site-plugin</artifactId>
+        <version>@sitePluginVersion@</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changelog-plugin</artifactId>
+        <version>@pom.version@</version>
+        <dependencies>
+          <dependency>
+            <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
+            <artifactId>maven-scm-provider-svnjava</artifactId>
+            <version>1.13</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changelog-plugin</artifactId>
+        <configuration>
+          <issueIDRegexPattern>[A-Z]{2,}-\d+</issueIDRegexPattern>
+          <issueLinkUrl>http://jira.example.co.uk</issueLinkUrl>
+          <providerImplementations>
+            <svn>javasvn</svn>
+          </providerImplementations>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>
diff --git a/src/it/with-svnjava-maven-2.x/verify.groovy b/src/it/with-svnjava-maven-2.x/verify.groovy
new file mode 100644
index 0000000..268098f
--- /dev/null
+++ b/src/it/with-svnjava-maven-2.x/verify.groovy
@@ -0,0 +1,34 @@
+
+/*
+ * 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.
+ */
+assert new File( basedir, 'target/site' ).exists();
+assert new File( basedir, 'target/site' ).isDirectory();
+
+assert new File( basedir, 'target/site/changelog.html' ).exists();
+assert new File( basedir, 'target/site/changelog.html' ).isFile();
+assert new File( basedir, 'target/site/dev-activity.html' ).exists();
+assert new File( basedir, 'target/site/dev-activity.html' ).isFile();
+assert new File( basedir, 'target/site/file-activity.html' ).exists();
+assert new File( basedir, 'target/site/file-activity.html' ).isFile();
+
+content = new File( basedir, 'build.log' ).text;
+
+assert content.contains( 'Change the default \'svn\' provider implementation to \'javasvn\'.' );
+
+return true;
\ No newline at end of file
