diff --git a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ValidateMojo.java b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ValidateMojo.java
index ae6989c..e3f3824 100644
--- a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ValidateMojo.java
+++ b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ValidateMojo.java
@@ -25,6 +25,7 @@
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.provider.svn.AbstractSvnScmProvider;
 
 import java.util.Iterator;
 import java.util.List;
@@ -56,12 +57,11 @@
     private String scmDeveloperConnection;
 
     /**
-     * <em>(Subversion specific)</em> Enables checking that "URL" field returned by svn info matches what is specified
-     * under the scm tag.
+     * <em>(Subversion specific)</em> Enables checking that "URL" field returned by 'svn info' matches what is
+     * specified under the scm tag.
+     * @see AbstractSvnScmProvider#CURRENT_WORKING_DIRECTORY
      */
     @Parameter( property = "scmCheckWorkingDirectoryUrl", defaultValue = "false" )
-    // Actually unused in the code here. Present for doc purpose,
-    // see org.apache.maven.scm.provider.svn.AbstractSvnScmProvider.CHECK_WORKING_DIRECTORY_URL
     private boolean scmCheckWorkingDirectoryUrl;
 
     /**
@@ -101,7 +101,7 @@
     {
         if ( scmCheckWorkingDirectoryUrl )
         {
-            System.setProperty( "scmCheckWorkingDirectoryUrl.currentWorkingDirectory",
+            System.setProperty( AbstractSvnScmProvider.CURRENT_WORKING_DIRECTORY,
                                 project.getFile().getParentFile().getAbsolutePath() );
         }
         List<String> messages = getScmManager().validateScmRepository( connectionString );
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java
index 013afad..f1e49e5 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java
@@ -72,7 +72,7 @@
         private ScmProviderRepository repository;
     }
 
-    private static final String CHECK_WORKING_DIRECTORY_URL = "scmCheckWorkingDirectoryUrl";
+    public static final String CURRENT_WORKING_DIRECTORY = "scmCheckWorkingDirectoryUrl.currentWorkingDirectory";
 
     // ----------------------------------------------------------------------
     // ScmProvider Implementation
@@ -94,12 +94,12 @@
     {
         ScmUrlParserResult result = parseScmUrl( scmSpecificUrl );
 
-        if ( checkWorkingDirectoryUrl() )
+        if ( checkCurrentWorkingDirectoryUrl() )
         {
             getLogger().debug( "Checking svn info 'URL:' field matches current sources directory" );
             try
             {
-                String workingDir = System.getProperty( "scmCheckWorkingDirectoryUrl.currentWorkingDirectory" );
+                String workingDir = System.getProperty( CURRENT_WORKING_DIRECTORY );
                 InfoScmResult info =
                     info( result.repository, new ScmFileSet( new File( workingDir ) ), new CommandParameters() );
 
@@ -125,9 +125,9 @@
         return result.repository;
     }
 
-    private boolean checkWorkingDirectoryUrl()
+    private boolean checkCurrentWorkingDirectoryUrl()
     {
-        return Boolean.getBoolean( CHECK_WORKING_DIRECTORY_URL );
+        return StringUtils.isNotEmpty( System.getProperty( CURRENT_WORKING_DIRECTORY ) );
     }
 
     private String findUrlInfoItem( InfoScmResult infoScmResult )
