You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/05/21 20:41:41 UTC

[maven-scm] branch scm-979-deplexus updated (9cc1e5d4e -> 9797596ba)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git


 discard 9cc1e5d4e Fix case
 discard b3a2b5693 Fix TBD
 discard 83953ce51 Clean up dependencies
 discard c2e14634d Replace SecDispatcher
 discard c68718b87 Small improvements
    omit 920741c57 Cleanup logging
    omit 397a56461 guard for nulls
    omit 5df1f9b2d Remove junk from POMs
    omit 1310aabf7 [SCM-979] De-Plexus, Java8
     add fe474847b Style improvements
     add dd090d830 [SCM-982] Upgrade to Java 8
     new f0507da06 [SCM-979] Replace Plexus Container Default with Sisu Plexus Shim
     new 48ea0531b Remove junk from POMs
     new 4bc295584 guard for nulls
     new 135507cec Cleanup logging
     new bdb558753 Small improvements
     new fbe681d89 Replace SecDispatcher
     new fdfd9b761 Clean up dependencies
     new 9797596ba Fix TBD

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (9cc1e5d4e)
            \
             N -- N -- N   refs/heads/scm-979-deplexus (9797596ba)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/main/java/org/apache/maven/scm/provider/hg/HgConfig.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


[maven-scm] 06/08: Replace SecDispatcher

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit fbe681d89cf8309f1f4f23e5fd3fb6e209441801
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat May 21 20:24:09 2022 +0200

    Replace SecDispatcher
---
 .../apache/maven/scm/plugin/AbstractScmMojo.java   | 34 ++++++++--------
 .../main/resources/META-INF/plexus/components.xml  | 45 ----------------------
 .../java/org/apache/maven/scm/ScmTestCase.java     | 21 ----------
 3 files changed, 16 insertions(+), 84 deletions(-)

diff --git a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
index 7c17086d1..f1ecfeddc 100644
--- a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
+++ b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java
@@ -48,11 +48,13 @@ import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.building.SettingsProblem;
+import org.apache.maven.settings.crypto.DefaultSettingsDecryptionRequest;
+import org.apache.maven.settings.crypto.SettingsDecrypter;
+import org.apache.maven.settings.crypto.SettingsDecryptionResult;
 import org.apache.maven.shared.model.fileset.FileSet;
 import org.apache.maven.shared.model.fileset.util.FileSetManager;
 import org.codehaus.plexus.util.StringUtils;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
 
 /**
  * @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
@@ -142,12 +144,8 @@ public abstract class AbstractScmMojo
     @Component
     private ScmManager manager;
 
-    /**
-     * When this plugin requires Maven 3.0 as minimum, this component can be removed and o.a.m.s.c.SettingsDecrypter be
-     * used instead.
-     */
-    @Component( hint = "mng-4384" )
-    private SecDispatcher secDispatcher;
+    @Component
+    private SettingsDecrypter settingsDecrypter;
 
     /**
      * The base directory.
@@ -397,6 +395,8 @@ public abstract class AbstractScmMojo
 
             if ( server != null )
             {
+                server = decrypt( server );
+
                 if ( username == null )
                 {
                     username = server.getUsername();
@@ -404,7 +404,7 @@ public abstract class AbstractScmMojo
 
                 if ( password == null )
                 {
-                    password = decrypt( server.getPassword(), host );
+                    password = server.getPassword();
                 }
 
                 if ( privateKey == null )
@@ -414,23 +414,21 @@ public abstract class AbstractScmMojo
 
                 if ( passphrase == null )
                 {
-                    passphrase = decrypt( server.getPassphrase(), host );
+                    passphrase = server.getPassphrase();
                 }
             }
         }
     }
 
-    private String decrypt( String str, String server )
+    private Server decrypt( Server server )
     {
-        try
-        {
-            return secDispatcher.decrypt( str );
-        }
-        catch ( SecDispatcherException e )
+        SettingsDecryptionResult result = settingsDecrypter.decrypt( new DefaultSettingsDecryptionRequest( server ) );
+        for ( SettingsProblem problem : result.getProblems() )
         {
-            getLog().warn( "Failed to decrypt password/passphrase for server " + server + ", using auth token as is" );
-            return str;
+            getLog().error( problem.getMessage(), problem.getException() );
         }
+
+        return result.getServer();
     }
 
     public void checkResult( ScmResult result )
diff --git a/maven-scm-plugin/src/main/resources/META-INF/plexus/components.xml b/maven-scm-plugin/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 6c997dbc6..000000000
--- a/maven-scm-plugin/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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.
--->
-
-<component-set>
-  <components>
-    <component>
-      <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
-      <role-hint>mng-4384</role-hint>
-      <implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>
-      <requirements>
-        <requirement>
-          <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
-          <role-hint>mng-4384</role-hint>
-          <field-name>_cipher</field-name>
-        </requirement>
-      </requirements>
-      <configuration>
-        <_configuration-file>~/.m2/settings-security.xml</_configuration-file>
-      </configuration>
-    </component>
-    <component>
-      <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
-      <role-hint>mng-4384</role-hint>
-      <implementation>org.sonatype.plexus.components.cipher.DefaultPlexusCipher</implementation>
-    </component>
-  </components>
-</component-set>
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
index a447dc803..4755b6373 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
@@ -30,7 +30,6 @@ import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer;
 import org.codehaus.plexus.util.cli.Commandline;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -58,8 +57,6 @@ public abstract class ScmTestCase
 
     private ScmManager scmManager;
 
-    private SecDispatcher secDispatcher;
-
     protected void setUp()
         throws Exception
     {
@@ -146,24 +143,6 @@ public abstract class ScmTestCase
         return scmManager;
     }
 
-    /**
-     * If you wish to use this component, make sure to configure your
-     * TCK implementation to include plexus component configuration
-     * as doc at https://issues.apache.org/jira/browse/MNG-4384
-     * @return SecDispatcher
-     * @throws Exception
-     */
-    public SecDispatcher getSecDispatcher()
-        throws Exception
-    {
-        if ( secDispatcher == null )
-        {
-            secDispatcher = (SecDispatcher) lookup( SecDispatcher.class, "mng-4384" );
-        }
-
-        return secDispatcher;
-    }
-
     protected ScmRepository makeScmRepository( String scmUrl )
         throws Exception
     {


[maven-scm] 02/08: Remove junk from POMs

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 48ea0531b73764f1edfff7fffd49bff1fcb09c1d
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 20 12:27:48 2022 +0200

    Remove junk from POMs
---
 maven-scm-managers/maven-scm-manager-plexus/pom.xml   | 19 +------------------
 .../maven-scm-provider-jgit/pom.xml                   | 13 -------------
 .../maven-scm-provider-svnexe/pom.xml                 | 17 -----------------
 3 files changed, 1 insertion(+), 48 deletions(-)

diff --git a/maven-scm-managers/maven-scm-manager-plexus/pom.xml b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
index 58bc4af22..afe48733e 100644
--- a/maven-scm-managers/maven-scm-manager-plexus/pom.xml
+++ b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
@@ -47,22 +47,5 @@
       <artifactId>maven-scm-api</artifactId>
     </dependency>
   </dependencies>
-  
-<!--  <build>-->
-<!--    <plugins>-->
-<!--      <plugin>-->
-<!--        <groupId>org.codehaus.plexus</groupId>-->
-<!--        <artifactId>plexus-component-metadata</artifactId>-->
-<!--        <executions>-->
-<!--          <execution>-->
-<!--            <id>create-component-descriptor</id>-->
-<!--            <phase>generate-resources</phase>-->
-<!--            <goals>-->
-<!--              <goal>generate-metadata</goal>-->
-<!--            </goals>-->
-<!--          </execution>-->
-<!--        </executions>-->
-<!--      </plugin>-->
-<!--    </plugins>-->
-<!--  </build>-->
+
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
index de6d8af10..5c6a0aae5 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
@@ -65,19 +65,6 @@
 
   <build>
     <plugins>
-<!--      <plugin>-->
-<!--        <groupId>org.codehaus.plexus</groupId>-->
-<!--        <artifactId>plexus-component-metadata</artifactId>-->
-<!--        <executions>-->
-<!--          <execution>-->
-<!--            <id>create-component-descriptor</id>-->
-<!--            <phase>generate-resources</phase>-->
-<!--            <goals>-->
-<!--              <goal>generate-metadata</goal>-->
-<!--            </goals>-->
-<!--          </execution>-->
-<!--        </executions>-->
-<!--      </plugin>-->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
index 83dcefb4e..26a5ba5d0 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
@@ -66,21 +66,4 @@
 	</dependency>
   </dependencies>
 
-<!--  <build>-->
-<!--    <plugins>-->
-<!--      <plugin>-->
-<!--        <groupId>org.codehaus.plexus</groupId>-->
-<!--        <artifactId>plexus-component-metadata</artifactId>-->
-<!--        <executions>-->
-<!--          <execution>-->
-<!--            <id>create-component-descriptor</id>-->
-<!--            <phase>generate-resources</phase>-->
-<!--            <goals>-->
-<!--              <goal>generate-metadata</goal>-->
-<!--            </goals>-->
-<!--          </execution>-->
-<!--        </executions>-->
-<!--      </plugin>-->
-<!--    </plugins>-->
-<!--  </build>-->
 </project>


[maven-scm] 08/08: Fix TBD

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 9797596ba676e33c83a6db6002eb16d15c909350
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat May 21 22:14:39 2022 +0200

    Fix TBD
---
 .../src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
index 6566f52a6..4fd8ae33a 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
@@ -27,7 +27,7 @@ import static java.util.Objects.requireNonNull;
 /**
  * {@link ScmLogger} backed by SLF4J.
  *
- * @since TBD
+ * @since 2.0.0-M2
  */
 public class Slf4jScmLogger
         implements ScmLogger


[maven-scm] 07/08: Clean up dependencies

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit fdfd9b761bdcf6f84366d6547f5a4998845e500b
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat May 21 20:49:51 2022 +0200

    Clean up dependencies
---
 maven-scm-api/pom.xml                              |  4 ++++
 maven-scm-client/pom.xml                           | 15 +++++++++++++
 .../maven-scm-manager-plexus/pom.xml               |  4 ----
 maven-scm-plugin/pom.xml                           | 25 ++++++++++++++++++++++
 maven-scm-providers/maven-scm-provider-hg/pom.xml  | 15 +++++++++++++
 .../maven-scm-provider-local/pom.xml               |  4 ++++
 .../maven-scm-provider-git-commons/pom.xml         | 17 +++++++++++++++
 .../maven-scm-provider-gitexe/pom.xml              | 14 ++++++++++++
 .../maven-scm-provider-gittest/pom.xml             | 17 +++++++++++++++
 .../maven-scm-provider-jgit/pom.xml                |  5 +++++
 .../maven-scm-provider-svn-commons/pom.xml         |  5 +++++
 .../maven-scm-provider-svnexe/pom.xml              | 19 ++++++++++++++++
 .../maven-scm-provider-svntest/pom.xml             |  8 +++++++
 maven-scm-test/pom.xml                             | 17 +++++++++++----
 pom.xml                                            |  8 -------
 15 files changed, 161 insertions(+), 16 deletions(-)

diff --git a/maven-scm-api/pom.xml b/maven-scm-api/pom.xml
index ff0b9a3e8..94d1997c8 100644
--- a/maven-scm-api/pom.xml
+++ b/maven-scm-api/pom.xml
@@ -38,6 +38,10 @@
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git a/maven-scm-client/pom.xml b/maven-scm-client/pom.xml
index 533bd7c98..875e586db 100644
--- a/maven-scm-client/pom.xml
+++ b/maven-scm-client/pom.xml
@@ -37,24 +37,37 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-manager-plexus</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
     </dependency>
 
     <!-- providers declaration -->
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-gitexe</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-hg</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-local</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svnexe</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <!-- end providers declaration -->
 
@@ -62,10 +75,12 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-classworlds</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-component-annotations</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.eclipse.sisu</groupId>
diff --git a/maven-scm-managers/maven-scm-manager-plexus/pom.xml b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
index afe48733e..c8f5142f2 100644
--- a/maven-scm-managers/maven-scm-manager-plexus/pom.xml
+++ b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
@@ -38,10 +38,6 @@
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.eclipse.sisu</groupId>
-      <artifactId>org.eclipse.sisu.plexus</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-api</artifactId>
diff --git a/maven-scm-plugin/pom.xml b/maven-scm-plugin/pom.xml
index 2d01744ab..8154d7b55 100644
--- a/maven-scm-plugin/pom.xml
+++ b/maven-scm-plugin/pom.xml
@@ -55,6 +55,12 @@
       <version>${mavenVersion}</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>provided</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
@@ -73,9 +79,20 @@
       <version>${mavenVersion}</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-settings-builder</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-api</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-manager-plexus</artifactId>
+      <scope>runtime</scope>
     </dependency>
 
     <!-- providers declaration -->
@@ -84,10 +101,12 @@
       <artifactId>maven-scm-providers-standard</artifactId>
       <version>${project.version}</version>
       <type>pom</type>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-local</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <!-- This is used directly by the mojo -->
     <dependency>
@@ -110,6 +129,7 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-sec-dispatcher</artifactId>
+      <scope>runtime</scope>
     </dependency>
 
     <!-- dependencies to annotations -->
@@ -131,6 +151,11 @@
       <version>3.3.0</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-test</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svntest</artifactId>
diff --git a/maven-scm-providers/maven-scm-provider-hg/pom.xml b/maven-scm-providers/maven-scm-provider-hg/pom.xml
index cf4190cd9..e8f6270e8 100644
--- a/maven-scm-providers/maven-scm-provider-hg/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-hg/pom.xml
@@ -53,6 +53,21 @@
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/maven-scm-providers/maven-scm-provider-local/pom.xml b/maven-scm-providers/maven-scm-provider-local/pom.xml
index 47146250b..96a772495 100644
--- a/maven-scm-providers/maven-scm-provider-local/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-local/pom.xml
@@ -38,6 +38,10 @@
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/pom.xml
index 17e1a308e..be0cda19f 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/pom.xml
@@ -74,4 +74,21 @@
       </plugin>
     </plugins>
   </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId> javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
index 44c60590f..113e6d07c 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
@@ -46,6 +46,10 @@
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
 
     <!-- Test -->
     <dependency>
@@ -57,6 +61,16 @@
       <artifactId>maven-scm-provider-gittest</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
index c7f278830..0e145bfb1 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
@@ -42,5 +42,22 @@
       <groupId>org.apache.maven.scm</groupId>
 	  <artifactId>maven-scm-provider-git-commons</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <version>1.3</version>
+    </dependency>
   </dependencies>
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
index cebff98df..c3f4885ae 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
@@ -58,6 +58,11 @@
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
     </dependency>
 
     <!-- Test -->
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
index 3630d31ad..2bfdaf674 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
@@ -37,6 +37,11 @@
     <dependency>
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
     </dependency>
   </dependencies>
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
index 26a5ba5d0..2b8296e37 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
@@ -52,6 +52,10 @@
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
 
     <!-- Test -->
     <dependency>
@@ -59,6 +63,21 @@
       <artifactId>maven-scm-provider-svntest</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/pom.xml
index e073434e7..9a9f794b7 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/pom.xml
@@ -38,5 +38,13 @@
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-test</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
   </dependencies>
 </project>
diff --git a/maven-scm-test/pom.xml b/maven-scm-test/pom.xml
index 4a14ca645..94d1316d8 100644
--- a/maven-scm-test/pom.xml
+++ b/maven-scm-test/pom.xml
@@ -39,22 +39,29 @@
       <artifactId>maven-scm-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.scm</groupId>
-      <artifactId>maven-scm-manager-plexus</artifactId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
     </dependency>
 
     <!-- runtime bits needed to construct Plexus and others -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-classworlds</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-component-annotations</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.sisu</groupId>
-      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-manager-plexus</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>com.google.inject</groupId>
@@ -65,10 +72,12 @@
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-sec-dispatcher</artifactId>
+      <scope>runtime</scope>
     </dependency>
 
     <dependency>
diff --git a/pom.xml b/pom.xml
index 1bc94e0e7..4e4a368da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -277,15 +277,7 @@
     </dependencies>
   </dependencyManagement>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-    </dependency>
-  </dependencies>
-
   <build>
-
     <pluginManagement>
       <plugins>
         <plugin>


[maven-scm] 05/08: Small improvements

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit bdb55875355d7e0903eddb11e12d62e74fab5815
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat May 21 20:01:40 2022 +0200

    Small improvements
---
 .../src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java    | 2 +-
 maven-scm-plugin/pom.xml                                          | 1 -
 pom.xml                                                           | 7 ++++---
 src/site/apt/guide/new_provider.apt                               | 8 ++++----
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
index c978f9190..6566f52a6 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory;
 import static java.util.Objects.requireNonNull;
 
 /**
- * {@link ScmLogger} backed by Slf4j.
+ * {@link ScmLogger} backed by SLF4J.
  *
  * @since TBD
  */
diff --git a/maven-scm-plugin/pom.xml b/maven-scm-plugin/pom.xml
index 89a0b139b..2d01744ab 100644
--- a/maven-scm-plugin/pom.xml
+++ b/maven-scm-plugin/pom.xml
@@ -196,7 +196,6 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-plugin-plugin</artifactId>
-          <version>3.6.4</version>
           <configuration>
             <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
           </configuration>
diff --git a/pom.xml b/pom.xml
index ee953d112..1bc94e0e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -125,6 +125,7 @@
 
   <properties>
     <javaVersion>8</javaVersion>
+    <slf4jVersion>1.7.36</slf4jVersion>
     <maven.site.path>scm-archives/scm-LATEST</maven.site.path>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
     <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
@@ -186,17 +187,17 @@
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
-        <version>1.7.36</version>
+        <version>${slf4jVersion}</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-simple</artifactId>
-        <version>1.7.36</version>
+        <version>${slf4jVersion}</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
-        <version>1.7.36</version>
+        <version>${slf4jVersion}</version>
       </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
diff --git a/src/site/apt/guide/new_provider.apt b/src/site/apt/guide/new_provider.apt
index 7cd9454ef..e770a8796 100644
--- a/src/site/apt/guide/new_provider.apt
+++ b/src/site/apt/guide/new_provider.apt
@@ -101,7 +101,7 @@ How to write a new SCM provider?
 </project>
 +------------------------------------------+
 
-  The SISU maven plugin will generate the components meta-data file used by the
+  The Sisu Maven Plugin will generate the components meta-data file used by the
   DI to discover them inject them to SCM manager.
 
 * Create an SCM Provider Repository class
@@ -171,7 +171,7 @@ public class MyScmProvider
 }
 +------------------------------------------+
 
-  The JSR330 annotations will be used by the SISU maven plugin,
+  The JSR330 annotations will be used by the Sisu Maven Plugin,
   declared in the POM, to generate component meta-data.
   Generally, we use the string just after <scm:> in the scm URL as the
   <provider_name>.
@@ -242,8 +242,8 @@ public class MyScmProvider
 
 ** Other tests
 
-  You can do manual tests in the real world with the Maven SCM plugin,
-  the maven release plugin, the maven changelog plugin and Continuum.
+  You can do manual tests in the real world with the Maven SCM Plugin,
+  the Maven Release Plugin, the Maven Changelog Plugin and Continuum.
 
   It's important to test your SCM provider with these tools, because they are
   used by users that will use your provider.


[maven-scm] 01/08: [SCM-979] Replace Plexus Container Default with Sisu Plexus Shim

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit f0507da06f23e5c8adc6d202f8085080d249e8ee
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 20 12:20:58 2022 +0200

    [SCM-979] Replace Plexus Container Default with Sisu Plexus Shim
    
    Changes:
    
    * Update and clean up dependencies accordingly
    * Remove any uses of deprecated Plexus APIs
    * Replace plexus-container-default with plexus-shim
    
    This closes #141
---
 maven-scm-api/pom.xml                              |   4 +
 .../org/apache/maven/scm/log/ScmLogDispatcher.java |  20 +-
 .../org/apache/maven/scm/log/Slf4jScmLogger.java   | 195 ++++++++++++++++
 .../maven/scm/manager/AbstractScmManager.java      | 250 +++++++++++----------
 .../apache/maven/scm/manager/BasicScmManager.java  |   9 -
 .../scm/manager/NoSuchScmProviderException.java    |   7 +-
 .../org/apache/maven/scm/manager/ScmManager.java   |   2 -
 .../maven/scm/provider/AbstractScmProvider.java    |  84 ++++++-
 .../org/apache/maven/scm/provider/ScmProvider.java |   3 -
 .../apache/maven/scm/util/AbstractConsumer.java    |  11 +-
 maven-scm-client/pom.xml                           |  38 ++--
 .../apache/maven/scm/client/cli/MavenScmCli.java   |  43 +++-
 .../main/resources/META-INF/plexus/components.xml  |  56 -----
 .../maven-scm-manager-plexus/pom.xml               |  42 ++--
 .../scm/manager/plexus/DefaultScmManager.java      |  86 ++-----
 .../maven/scm/manager/plexus/PlexusLogger.java     | 135 -----------
 maven-scm-plugin/pom.xml                           |  21 +-
 maven-scm-providers/maven-scm-provider-hg/pom.xml  |  24 +-
 .../maven/scm/provider/hg/HgScmProvider.java       |  10 +-
 .../maven-scm-provider-local/pom.xml               |  20 +-
 .../maven/scm/provider/local/LocalScmProvider.java |  18 +-
 .../maven/scm/provider/git/TestGitScmProvider.java |   5 +
 .../test/resources/META-INF/plexus/components.xml  |  28 ---
 .../maven-scm-provider-gitexe/pom.xml              |  21 +-
 .../scm/provider/git/gitexe/GitExeScmProvider.java |   7 +-
 .../maven-scm-provider-jgit/pom.xml                |  42 ++--
 .../scm/provider/git/jgit/JGitScmProvider.java     |  25 ++-
 .../maven-scm-provider-svn-commons/pom.xml         |   7 +
 .../maven/scm/provider/svn/TestSvnScmProvider.java |   5 +
 .../test/resources/META-INF/plexus/components.xml  |  28 ---
 .../maven-scm-provider-svnexe/pom.xml              |  38 ++--
 .../scm/provider/svn/svnexe/SvnExeScmProvider.java |  24 +-
 .../changelog/SvnChangeLogConsumerTest.java        |   7 +-
 maven-scm-test/pom.xml                             |  25 ++-
 .../java/org/apache/maven/scm/ScmTestCase.java     |  12 +-
 .../maven/scm/manager/ScmManagerStubTest.java      |   2 +-
 pom.xml                                            |  76 ++++---
 src/site/apt/guide/new_provider.apt                |  22 +-
 38 files changed, 792 insertions(+), 660 deletions(-)

diff --git a/maven-scm-api/pom.xml b/maven-scm-api/pom.xml
index a3d92db0a..ff0b9a3e8 100644
--- a/maven-scm-api/pom.xml
+++ b/maven-scm-api/pom.xml
@@ -34,6 +34,10 @@
   <description>The SCM API provides mechanisms to manage all SCM tools.</description>
 
   <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java
index 6ef200ef5..fba4fa46e 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java
@@ -19,8 +19,8 @@ package org.apache.maven.scm.log;
  * under the License.
  */
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -30,7 +30,7 @@ import java.util.List;
 public class ScmLogDispatcher
     implements ScmLogger
 {
-    private List<ScmLogger> listeners = new ArrayList<ScmLogger>();
+    private final List<ScmLogger> listeners = new CopyOnWriteArrayList<>();
 
     public void addListener( ScmLogger logger )
     {
@@ -38,6 +38,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void debug( String content, Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -47,6 +48,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void debug( String content )
     {
         for ( ScmLogger logger : listeners )
@@ -56,6 +58,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void debug( Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -65,6 +68,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void error( String content, Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -74,6 +78,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void error( String content )
     {
         for ( ScmLogger logger : listeners )
@@ -83,6 +88,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void error( Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -92,6 +98,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void info( String content, Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -104,6 +111,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void info( String content )
     {
         for ( ScmLogger logger : listeners )
@@ -116,6 +124,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void info( Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -128,6 +137,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public boolean isDebugEnabled()
     {
         for ( ScmLogger logger : listeners )
@@ -142,6 +152,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public boolean isErrorEnabled()
     {
         for ( ScmLogger logger : listeners )
@@ -156,6 +167,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public boolean isInfoEnabled()
     {
         for ( ScmLogger logger : listeners )
@@ -170,6 +182,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public boolean isWarnEnabled()
     {
         for ( ScmLogger logger : listeners )
@@ -184,6 +197,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void warn( String content, Throwable error )
     {
         for ( ScmLogger logger : listeners )
@@ -193,6 +207,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void warn( String content )
     {
         for ( ScmLogger logger : listeners )
@@ -202,6 +217,7 @@ public class ScmLogDispatcher
     }
 
     /** {@inheritDoc} */
+    @Override
     public void warn( Throwable error )
     {
         for ( ScmLogger logger : listeners )
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
new file mode 100644
index 000000000..7212a6d4e
--- /dev/null
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
@@ -0,0 +1,195 @@
+package org.apache.maven.scm.log;
+
+/*
+ * 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.
+ */
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * {@link ScmLogger} backed by Slf4j.
+ *
+ * @since TBD
+ */
+public class Slf4jScmLogger
+    implements ScmLogger
+{
+    private final Logger logger;
+
+    public Slf4jScmLogger()
+    {
+        this( Slf4jScmLogger.class );
+    }
+
+    public Slf4jScmLogger( final Class<?> owner )
+    {
+        this( LoggerFactory.getLogger( owner ) );
+    }
+
+    public Slf4jScmLogger( final Logger logger )
+    {
+        this.logger = requireNonNull( logger );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isDebugEnabled()
+    {
+        return this.logger.isDebugEnabled();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void debug( String content )
+    {
+        this.logger.debug( content );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void debug( String content, Throwable error )
+    {
+        this.logger.debug( content, error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void debug( Throwable error )
+    {
+        this.logger.debug( "", error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInfoEnabled()
+    {
+        return this.logger.isInfoEnabled();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void info( String content )
+    {
+        this.logger.info( content );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void info( String content, Throwable error )
+    {
+        this.logger.info( content, error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void info( Throwable error )
+    {
+        this.logger.info( "", error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isWarnEnabled()
+    {
+        return this.logger.isWarnEnabled();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void warn( String content )
+    {
+        this.logger.warn( content );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void warn( String content, Throwable error )
+    {
+        this.logger.warn( content, error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void warn( Throwable error )
+    {
+        this.logger.warn( "", error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isErrorEnabled()
+    {
+        return this.logger.isErrorEnabled();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void error( String content )
+    {
+        this.logger.error( content );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void error( String content, Throwable error )
+    {
+        this.logger.error( content, error );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void error( Throwable error )
+    {
+        this.logger.error( "", error );
+    }
+}
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java
index 7e06bcdbc..67783ff1e 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java
@@ -19,6 +19,13 @@ package org.apache.maven.scm.manager;
  * under the License.
  */
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmBranchParameters;
 import org.apache.maven.scm.ScmException;
@@ -44,47 +51,44 @@ import org.apache.maven.scm.command.tag.TagScmResult;
 import org.apache.maven.scm.command.unedit.UnEditScmResult;
 import org.apache.maven.scm.command.update.UpdateScmResult;
 import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.log.Slf4jScmLogger;
 import org.apache.maven.scm.provider.ScmProvider;
 import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.provider.ScmUrlUtils;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.scm.repository.UnknownRepositoryStructure;
+import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
+import static java.util.Objects.requireNonNull;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
- *
  */
 public abstract class AbstractScmManager
-    implements ScmManager
+        implements ScmManager
 {
-    private Map<String, ScmProvider> scmProviders = new HashMap<String, ScmProvider>();
+    private final ScmLogger logger = new Slf4jScmLogger( LoggerFactory.getLogger( getClass() ) );
 
-    private ScmLogger logger;
+    private final Map<String, ScmProvider> scmProviders = new ConcurrentHashMap<>();
 
-    private Map<String, String> userProviderTypes = new HashMap<String, String>();
+    private final Map<String, String> userProviderTypes = new ConcurrentHashMap<>();
 
     protected void setScmProviders( Map<String, ScmProvider> providers )
     {
-        this.scmProviders = providers;
+        requireNonNull( providers );
+        this.scmProviders.clear();
+        providers.forEach( this::setScmProvider );
     }
 
     /**
-     * @deprecated use {@link #setScmProvider(String, ScmProvider)} instead
-
      * @param providerType the type of SCM, eg. <code>svn</code>, <code>git</code>
      * @param provider     the provider that will be used for that SCM type
+     * @deprecated use {@link #setScmProvider(String, ScmProvider)} instead
      */
+    @Deprecated
     protected void addScmProvider( String providerType, ScmProvider provider )
     {
         setScmProvider( providerType, provider );
@@ -97,12 +101,19 @@ public abstract class AbstractScmManager
      * @param providerType the type of SCM, eg. <code>svn</code>, <code>git</code>
      * @param provider     the provider that will be used for that SCM type
      */
+    @Override
     public void setScmProvider( String providerType, ScmProvider provider )
     {
+        requireNonNull( providerType );
+        requireNonNull( provider );
+        provider.addListener( logger );
         scmProviders.put( providerType, provider );
     }
 
-    protected abstract ScmLogger getScmLogger();
+    protected ScmLogger getScmLogger()
+    {
+        return logger;
+    }
 
     // ----------------------------------------------------------------------
     // ScmManager Implementation
@@ -111,13 +122,11 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmProvider getProviderByUrl( String scmUrl )
-        throws ScmRepositoryException, NoSuchScmProviderException
+            throws ScmRepositoryException, NoSuchScmProviderException
     {
-        if ( scmUrl == null )
-        {
-            throw new NullPointerException( "The scm url cannot be null." );
-        }
+        requireNonNull( scmUrl, "The scm url cannot be null." );
 
         String providerType = ScmUrlUtils.getProvider( scmUrl );
 
@@ -127,41 +136,26 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public void setScmProviderImplementation( String providerType, String providerImplementation )
     {
+        requireNonNull( providerType );
+        requireNonNull( providerImplementation );
         userProviderTypes.put( providerType, providerImplementation );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmProvider getProviderByType( String providerType )
-        throws NoSuchScmProviderException
+            throws NoSuchScmProviderException
     {
-        if ( logger == null )
-        {
-            logger = getScmLogger();
-
-            for ( Entry<String, ScmProvider> entry : scmProviders.entrySet() )
-            {
-                ScmProvider p = entry.getValue();
-
-                p.addListener( logger );
-            }
-        }
-
         String usedProviderType = System.getProperty( "maven.scm.provider." + providerType + ".implementation" );
 
         if ( usedProviderType == null )
         {
-            if ( userProviderTypes.containsKey( providerType ) )
-            {
-                usedProviderType = userProviderTypes.get( providerType );
-            }
-            else
-            {
-                usedProviderType = providerType;
-            }
+            usedProviderType = userProviderTypes.getOrDefault( providerType, providerType );
         }
 
         ScmProvider scmProvider = scmProviders.get( usedProviderType );
@@ -177,8 +171,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmProvider getProviderByRepository( ScmRepository repository )
-        throws NoSuchScmProviderException
+            throws NoSuchScmProviderException
     {
         return getProviderByType( repository.getProvider() );
     }
@@ -190,13 +185,11 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmRepository makeScmRepository( String scmUrl )
-        throws ScmRepositoryException, NoSuchScmProviderException
+            throws ScmRepositoryException, NoSuchScmProviderException
     {
-        if ( scmUrl == null )
-        {
-            throw new NullPointerException( "The scm url cannot be null." );
-        }
+        requireNonNull( scmUrl, "The scm url cannot be null." );
 
         char delimiter = ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 );
 
@@ -219,10 +212,7 @@ public abstract class AbstractScmManager
      */
     protected String cleanScmUrl( String scmUrl )
     {
-        if ( scmUrl == null )
-        {
-            throw new NullPointerException( "The scm url cannot be null." );
-        }
+        requireNonNull( scmUrl, "The scm url cannot be null." );
 
         String pathSeparator = "";
 
@@ -271,13 +261,11 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmRepository makeProviderScmRepository( String providerType, File path )
-        throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException
+            throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException
     {
-        if ( providerType == null )
-        {
-            throw new NullPointerException( "The provider type cannot be null." );
-        }
+        requireNonNull( providerType, "The provider type cannot be null." );
 
         ScmProvider provider = getProviderByType( providerType );
 
@@ -289,11 +277,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public List<String> validateScmRepository( String scmUrl )
     {
-        List<String> messages = new ArrayList<String>();
-
-        messages.addAll( ScmUrlUtils.validate( scmUrl ) );
+        List<String> messages = new ArrayList<>( ScmUrlUtils.validate( scmUrl ) );
 
         String providerType = ScmUrlUtils.getProvider( scmUrl );
 
@@ -313,12 +300,9 @@ public abstract class AbstractScmManager
         String scmSpecificUrl = cleanScmUrl( scmUrl.substring( providerType.length() + 5 ) );
 
         List<String> providerMessages =
-            provider.validateScmUrl( scmSpecificUrl, ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 ) );
+                provider.validateScmUrl( scmSpecificUrl, ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 ) );
 
-        if ( providerMessages == null )
-        {
-            throw new RuntimeException( "The SCM provider cannot return null from validateScmUrl()." );
-        }
+        requireNonNull( providerMessages, "The SCM provider cannot return null from validateScmUrl()." );
 
         messages.addAll( providerMessages );
 
@@ -328,8 +312,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).add( repository, fileSet );
     }
@@ -337,8 +322,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).add( repository, fileSet, message );
     }
@@ -346,52 +332,57 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
-        throws ScmException
+            throws ScmException
     {
         ScmBranchParameters scmBranchParameters = new ScmBranchParameters( "" );
         return this.getProviderByRepository( repository ).branch( repository, fileSet, branchName,
-                                                                  scmBranchParameters );
+                scmBranchParameters );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
-        throws ScmException
+            throws ScmException
     {
         ScmBranchParameters scmBranchParameters = new ScmBranchParameters( message );
         return this.getProviderByRepository( repository ).branch( repository, fileSet, branchName,
-                                                                  scmBranchParameters );
+                scmBranchParameters );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays,
-                                                                     branch );
+                branch );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch, String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays,
-                                                                     branch, datePattern );
+                branch, datePattern );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( scmRequest.getScmRepository() ).changeLog( scmRequest );
     }
@@ -399,9 +390,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startVersion, endVersion );
     }
@@ -409,19 +401,21 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision,
                                          ScmVersion endRevision, String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startRevision, endRevision,
-                                                                     datePattern );
+                datePattern );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkIn( repository, fileSet, message );
     }
@@ -429,8 +423,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkIn( repository, fileSet, revision, message );
     }
@@ -438,8 +433,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkOut( repository, fileSet );
     }
@@ -447,8 +443,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version );
     }
@@ -456,8 +453,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkOut( repository, fileSet, recursive );
     }
@@ -465,9 +463,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                        boolean recursive )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version, recursive );
     }
@@ -475,9 +474,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                ScmVersion endVersion )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).diff( repository, fileSet, startVersion, endVersion );
     }
@@ -485,8 +485,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).edit( repository, fileSet );
     }
@@ -494,8 +495,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).export( repository, fileSet );
     }
@@ -503,8 +505,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).export( repository, fileSet, version );
     }
@@ -512,19 +515,21 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String outputDirectory )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).export( repository, fileSet, (ScmVersion) null,
-                                                                  outputDirectory );
+                outputDirectory );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    String outputDirectory )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).export( repository, fileSet, version, outputDirectory );
     }
@@ -532,8 +537,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).list( repository, fileSet, recursive, version );
     }
@@ -541,8 +547,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).mkdir( repository, fileSet, message, createInLocal );
     }
@@ -550,8 +557,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).remove( repository, fileSet, message );
     }
@@ -559,8 +567,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).status( repository, fileSet );
     }
@@ -568,8 +577,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName )
-        throws ScmException
+            throws ScmException
     {
         return this.tag( repository, fileSet, tagName, "" );
     }
@@ -577,8 +587,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message )
-        throws ScmException
+            throws ScmException
     {
         ScmTagParameters scmTagParameters = new ScmTagParameters( message );
         return this.getProviderByRepository( repository ).tag( repository, fileSet, tagName, scmTagParameters );
@@ -587,8 +598,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).unedit( repository, fileSet );
     }
@@ -596,8 +608,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet );
     }
@@ -605,8 +618,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, version );
     }
@@ -614,8 +628,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, runChangelog );
     }
@@ -623,9 +638,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    boolean runChangelog )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, version, runChangelog );
     }
@@ -633,8 +649,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, datePattern );
     }
@@ -642,9 +659,10 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, version, datePattern );
     }
@@ -652,8 +670,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, Date lastUpdate )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, lastUpdate );
     }
@@ -661,8 +680,9 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate );
     }
@@ -670,35 +690,39 @@ public abstract class AbstractScmManager
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, Date lastUpdate, String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, lastUpdate,
-                                                                  datePattern );
+                datePattern );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate,
                                    String datePattern )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate,
-                                                                  datePattern );
+                datePattern );
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( repository ).blame( repository, fileSet, filename );
     }
 
+    @Override
     public BlameScmResult blame( BlameScmRequest blameScmRequest )
-        throws ScmException
+            throws ScmException
     {
         return this.getProviderByRepository( blameScmRequest.getScmRepository() ).blame( blameScmRequest );
     }
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java
index 2af520462..31eef8ecf 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java
@@ -19,9 +19,6 @@ package org.apache.maven.scm.manager;
  * under the License.
  */
 
-import org.apache.maven.scm.log.DefaultLog;
-import org.apache.maven.scm.log.ScmLogger;
-
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  *
@@ -29,10 +26,4 @@ import org.apache.maven.scm.log.ScmLogger;
 public class BasicScmManager
     extends AbstractScmManager
 {
-    /** {@inheritDoc} */
-    @Deprecated
-    protected ScmLogger getScmLogger()
-    {
-        return new DefaultLog();
-    }
 }
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
index c2ed2be5a..9b1ad888f 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
@@ -21,6 +21,8 @@ package org.apache.maven.scm.manager;
 
 import org.apache.maven.scm.ScmException;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
@@ -31,13 +33,12 @@ public class NoSuchScmProviderException
 {
     static final long serialVersionUID = 4770645185214496323L;
 
-    private String providerName;
+    private final String providerName;
 
     public NoSuchScmProviderException( String providerName )
     {
         super( "No such provider: '" + providerName + "'." );
-
-        this.providerName = providerName;
+        this.providerName = requireNonNull( providerName );
     }
 
     public String getProviderName()
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
index f125b9a74..518e44235 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
@@ -59,8 +59,6 @@ import java.util.List;
  */
 public interface ScmManager
 {
-    String ROLE = ScmManager.class.getName();
-
     // ----------------------------------------------------------------------
     // Repository
     // ----------------------------------------------------------------------
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
index de30c6f4a..fffcad4ee 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
@@ -72,7 +72,7 @@ import java.util.List;
 public abstract class AbstractScmProvider
     implements ScmProvider
 {
-    private ScmLogDispatcher logDispatcher = new ScmLogDispatcher();
+    private final ScmLogDispatcher logDispatcher = new ScmLogDispatcher();
 
     // ----------------------------------------------------------------------
     //
@@ -81,6 +81,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public String getScmSpecificFilename()
     {
         return null;
@@ -89,6 +90,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public String sanitizeTagName( String tag )
     {
         /* by default, we assume all tags are valid. */
@@ -98,6 +100,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean validateTagName( String tag )
     {
         /* by default, we assume all tags are valid. */
@@ -107,6 +110,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public List<String> validateScmUrl( String scmSpecificUrl, char delimiter )
     {
         List<String> messages = new ArrayList<String>();
@@ -126,6 +130,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean requiresEditMode()
     {
         return false;
@@ -138,6 +143,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -147,6 +153,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
@@ -163,6 +170,7 @@ public abstract class AbstractScmProvider
         return add( repository.getProviderRepository(), fileSet, parameters );
     }
 
+    @Override
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -178,6 +186,9 @@ public abstract class AbstractScmProvider
         return add( repository.getProviderRepository(), fileSet, parameters );
     }
 
+    /**
+     * TODO: why public? This should be protected, no?
+     */
     public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -187,6 +198,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
         throws ScmException
     {
@@ -196,6 +208,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException
     {
@@ -209,6 +222,7 @@ public abstract class AbstractScmProvider
         return branch( repository, fileSet, branchName, scmBranchParameters );
     }
 
+    @Override
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
                                    ScmBranchParameters scmBranchParameters )
         throws ScmException
@@ -236,6 +250,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, String branch )
         throws ScmException
@@ -248,6 +264,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, String branch, String datePattern )
         throws ScmException
@@ -265,6 +283,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch )
         throws ScmException
@@ -275,6 +294,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch, String datePattern )
         throws ScmException
@@ -290,6 +310,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ChangeLogScmRequest request )
         throws ScmException
     {
@@ -305,6 +326,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
         throws ScmException
     {
@@ -316,6 +339,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
                                          String datePattern )
         throws ScmException
@@ -339,6 +364,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion )
         throws ScmException
@@ -349,6 +375,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion, String datePattern )
         throws ScmException
@@ -379,6 +406,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
         throws ScmException
     {
@@ -395,6 +424,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
@@ -404,6 +434,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                      String message )
         throws ScmException
@@ -432,6 +463,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
@@ -443,6 +476,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag, boolean recursive )
         throws ScmException
     {
@@ -459,6 +494,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -468,6 +504,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
@@ -477,6 +514,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive )
         throws ScmException
     {
@@ -486,6 +524,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                        boolean recursive )
         throws ScmException
@@ -527,6 +566,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
         throws ScmException
     {
@@ -549,6 +590,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                ScmVersion endVersion )
         throws ScmException
@@ -573,6 +615,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -599,6 +642,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
@@ -610,6 +655,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
         throws ScmException
     {
@@ -626,6 +673,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -635,6 +683,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
@@ -644,6 +693,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    String outputDirectory )
         throws ScmException
@@ -669,6 +719,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
         throws ScmException
     {
@@ -685,6 +736,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion )
         throws ScmException
     {
@@ -721,6 +773,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
         throws ScmException
     {
@@ -779,6 +832,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
@@ -801,6 +855,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -821,6 +876,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName )
         throws ScmException
     {
@@ -830,6 +886,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message )
         throws ScmException
     {
@@ -854,6 +911,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName,
                              ScmTagParameters scmTagParameters )
         throws ScmException
@@ -878,6 +936,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -903,6 +962,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UntagScmResult untag( ScmRepository repository, ScmFileSet fileSet,
         CommandParameters parameters )
         throws ScmException
@@ -916,6 +976,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
@@ -927,6 +989,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
         throws ScmException
     {
@@ -936,6 +1000,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -945,6 +1010,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
@@ -954,6 +1020,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
         throws ScmException
     {
@@ -963,6 +1030,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    boolean runChangelog )
         throws ScmException
@@ -975,6 +1043,7 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
         throws ScmException
     {
@@ -984,6 +1053,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    String datePattern )
         throws ScmException
@@ -1030,6 +1100,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
         throws ScmException
     {
@@ -1039,6 +1111,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    Date lastUpdate )
         throws ScmException
@@ -1051,6 +1124,8 @@ public abstract class AbstractScmProvider
      *
      * @deprecated
      */
+    @Deprecated
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
                                    String datePattern )
         throws ScmException
@@ -1068,6 +1143,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate,
                                    String datePattern )
         throws ScmException
@@ -1100,6 +1176,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
         throws ScmException
     {
@@ -1118,6 +1195,7 @@ public abstract class AbstractScmProvider
         throw new NoSuchCommandScmException( "blame" );
     }
 
+    @Override
     public BlameScmResult blame( BlameScmRequest blameScmRequest )
         throws ScmException
     {
@@ -1125,12 +1203,14 @@ public abstract class AbstractScmProvider
                       blameScmRequest.getCommandParameters() );
     }
 
+    @Override
     public InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
         return null;
     }
 
+    @Override
     public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
                                            CommandParameters parameters )
         throws ScmException
@@ -1145,6 +1225,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public void addListener( ScmLogger logger )
     {
         logDispatcher.addListener( logger );
@@ -1158,6 +1239,7 @@ public abstract class AbstractScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public ScmProviderRepository makeProviderScmRepository( File path )
         throws ScmRepositoryException, UnknownRepositoryStructure
     {
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
index d7e69e979..219e2f115 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
@@ -62,8 +62,6 @@ import java.util.List;
  */
 public interface ScmProvider
 {
-    String ROLE = ScmProvider.class.getName();
-
     String getScmType();
 
     /**
@@ -71,7 +69,6 @@ public interface ScmProvider
      *
      * @param logger The logger
      */
-    @Deprecated
     void addListener( ScmLogger logger );
 
     boolean requiresEditMode();
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
index 8069101dc..20e30f5ca 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
@@ -29,6 +29,8 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  *
@@ -36,7 +38,7 @@ import java.util.Locale;
 public abstract class AbstractConsumer
     implements StreamConsumer
 {
-    private ScmLogger logger;
+    private final ScmLogger logger;
 
     /**
      * AbstractConsumer constructor.
@@ -45,7 +47,7 @@ public abstract class AbstractConsumer
      */
     public AbstractConsumer( ScmLogger logger )
     {
-        setLogger( logger );
+        this.logger = requireNonNull( logger );
     }
 
     public ScmLogger getLogger()
@@ -53,11 +55,6 @@ public abstract class AbstractConsumer
         return logger;
     }
 
-    public void setLogger( ScmLogger logger )
-    {
-        this.logger = logger;
-    }
-
     /**
      * Converts the date timestamp from the output into a date object.
      *
diff --git a/maven-scm-client/pom.xml b/maven-scm-client/pom.xml
index 553ff1d76..533bd7c98 100644
--- a/maven-scm-client/pom.xml
+++ b/maven-scm-client/pom.xml
@@ -57,28 +57,30 @@
       <artifactId>maven-scm-provider-svnexe</artifactId>
     </dependency>
     <!-- end providers declaration -->
+
+    <!-- runtime bits needed to construct Plexus -->
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-classworlds</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-component-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.inject</groupId>
+      <artifactId>guice</artifactId>
+      <classifier>no_aop</classifier>
+      <scope>runtime</scope>
+    </dependency>
   </dependencies>
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>merge</id>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/resources/META-INF/plexus/components.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>merge-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
diff --git a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
index 0f1b33c23..17b5f7f7b 100644
--- a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
+++ b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
@@ -37,7 +37,14 @@ import org.apache.maven.scm.manager.NoSuchScmProviderException;
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
-import org.codehaus.plexus.embed.Embedder;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.DefaultContext;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -47,7 +54,7 @@ import org.codehaus.plexus.util.StringUtils;
  */
 public class MavenScmCli
 {
-    private Embedder plexus;
+    private PlexusContainer plexus;
 
     private ScmManager scmManager;
 
@@ -58,18 +65,40 @@ public class MavenScmCli
     public MavenScmCli()
         throws Exception
     {
-        plexus = new Embedder();
-
-        plexus.start();
+        plexus = createPlexusContainer();
+        scmManager = plexus.lookup( ScmManager.class );
+    }
 
-        scmManager = (ScmManager) plexus.lookup( ScmManager.ROLE );
+    /**
+     * Method that creates Plexus container: we must create a Plexus container, as we must pick up any possible
+     * Plexus XML component definition (not used since Maven 3.8.1, but present in older Mavens).
+     */
+    private PlexusContainer createPlexusContainer() {
+        final Context context = new DefaultContext();
+        String path = System.getProperty( "basedir" );
+        if (path == null) {
+            path = new File( "" ).getAbsolutePath();
+        }
+        context.put( "basedir", path );
+
+        ContainerConfiguration plexusConfiguration = new DefaultContainerConfiguration();
+        plexusConfiguration.setName( "maven-scm-cli" )
+                .setContext( context.getContextData() )
+                .setClassPathScanning( PlexusConstants.SCANNING_CACHE )
+                .setAutoWiring( true );
+        try {
+            return new DefaultPlexusContainer( plexusConfiguration );
+        }
+        catch ( PlexusContainerException e ) {
+            throw new IllegalStateException( "Could not create Plexus container", e );
+        }
     }
 
     public void stop()
     {
         try
         {
-            plexus.stop();
+            plexus.dispose();
         }
         catch ( Exception ex )
         {
diff --git a/maven-scm-client/src/main/resources/META-INF/plexus/components.xml b/maven-scm-client/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index e9b9d94be..000000000
--- a/maven-scm-client/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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.
--->
-
-<component-set>
-  <components>
-    <component>
-      <role>org.apache.maven.scm.manager.ScmManager</role>
-      <implementation>org.apache.maven.scm.manager.plexus.DefaultScmManager</implementation>
-      <requirements>
-        <requirement>
-          <role>org.apache.maven.scm.provider.ScmProvider</role>
-          <field-name>scmProviders</field-name>
-        </requirement>
-      </requirements>
-    </component>
-
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>hg</role-hint>
-      <implementation>org.apache.maven.scm.provider.hg.HgScmProvider</implementation>
-      <description>Mercurial (Hg) is a decentralized revision control system.</description>
-    </component>
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>local</role-hint>
-      <implementation>org.apache.maven.scm.provider.local.LocalScmProvider</implementation>
-    </component>
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>git</role-hint>
-      <implementation>org.apache.maven.scm.provider.git.gitexe.GitExeScmProvider</implementation>
-    </component>
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>svn</role-hint>
-      <implementation>org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider</implementation>
-    </component>
-  </components>
-</component-set>
diff --git a/maven-scm-managers/maven-scm-manager-plexus/pom.xml b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
index 6548b95cd..58bc4af22 100644
--- a/maven-scm-managers/maven-scm-manager-plexus/pom.xml
+++ b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
@@ -35,8 +35,12 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-container-default</artifactId>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
@@ -44,21 +48,21 @@
     </dependency>
   </dependencies>
   
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+<!--  <build>-->
+<!--    <plugins>-->
+<!--      <plugin>-->
+<!--        <groupId>org.codehaus.plexus</groupId>-->
+<!--        <artifactId>plexus-component-metadata</artifactId>-->
+<!--        <executions>-->
+<!--          <execution>-->
+<!--            <id>create-component-descriptor</id>-->
+<!--            <phase>generate-resources</phase>-->
+<!--            <goals>-->
+<!--              <goal>generate-metadata</goal>-->
+<!--            </goals>-->
+<!--          </execution>-->
+<!--        </executions>-->
+<!--      </plugin>-->
+<!--    </plugins>-->
+<!--  </build>-->
 </project>
diff --git a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
index 6066519bb..ff9e079ec 100644
--- a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
+++ b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
@@ -19,97 +19,37 @@ package org.apache.maven.scm.manager.plexus;
  * under the License.
  */
 
-import org.apache.maven.scm.log.ScmLogger;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.scm.manager.AbstractScmManager;
 import org.apache.maven.scm.provider.ScmProvider;
-import org.codehaus.plexus.logging.LogEnabled;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 
-import java.util.HashMap;
 import java.util.Map;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @author Olivier Lamy
- *
- * @plexus.component role="org.apache.maven.scm.manager.ScmManager"
  */
+@Singleton
+@Named
 public class DefaultScmManager
     extends AbstractScmManager
-    implements Initializable, LogEnabled
 {
-    /**
-     * @plexus.requirement role="org.apache.maven.scm.provider.ScmProvider"
-     */
-    private Map<String, ScmProvider> scmProviders;
-
-    private Logger logger;
-
-    // ----------------------------------------------------------------------
-    // LogEnabled implementation
-    // ----------------------------------------------------------------------
-
-    public void enableLogging( Logger logger )
-    {
-        this.logger = logger;
-    }
-
-    protected Logger getLogger()
-    {
-        return logger;
-    }
-
-    protected void setupLogger( Object component )
-    {
-        setupLogger( component, logger );
-    }
-
-    protected void setupLogger( Object component, String subCategory )
-    {
-        if ( subCategory == null )
-        {
-            throw new IllegalStateException( "Logging category must be defined." );
-        }
-
-        Logger logger = this.logger.getChildLogger( subCategory );
-
-        setupLogger( component, logger );
-    }
-
-    protected void setupLogger( Object component, Logger logger )
+    @Inject
+    public DefaultScmManager( Map<String, ScmProvider> scmProviders )
     {
-        if ( component instanceof LogEnabled )
+        requireNonNull( scmProviders );
+        if ( scmProviders.isEmpty() )
         {
-            ( (LogEnabled) component ).enableLogging( logger );
-        }
-    }
-
-    // ----------------------------------------------------------------------
-    // Component Lifecycle
-    // ----------------------------------------------------------------------
-
-    /** {@inheritDoc} */
-    public void initialize()
-    {
-        if ( scmProviders == null )
-        {
-            scmProviders = new HashMap<String, ScmProvider>( 0 );
-        }
-
-        if ( getLogger().isWarnEnabled() && scmProviders.size() == 0 )
-        {
-            getLogger().warn( "No SCM providers configured." );
+            getScmLogger().warn( "No SCM providers configured." );
         }
 
         setScmProviders( scmProviders );
     }
-
-    /** {@inheritDoc} */
-    protected ScmLogger getScmLogger()
-    {
-        return new PlexusLogger( getLogger() );
-    }
 }
diff --git a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java
deleted file mode 100644
index 1d257281d..000000000
--- a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.apache.maven.scm.manager.plexus;
-
-/*
- * 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.
- */
-
-import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.logging.Logger;
-
-/**
- * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
- *
- */
-@Deprecated
-public class PlexusLogger
-    implements ScmLogger
-{
-    private Logger logger;
-
-    public PlexusLogger( Logger logger )
-    {
-        this.logger = logger;
-    }
-
-    /** {@inheritDoc} */
-    public boolean isDebugEnabled()
-    {
-        return logger.isDebugEnabled();
-    }
-
-    /** {@inheritDoc} */
-    public void debug( String content )
-    {
-        logger.debug( content );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( String content, Throwable error )
-    {
-        logger.debug( content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        logger.debug( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public boolean isInfoEnabled()
-    {
-        return logger.isInfoEnabled();
-    }
-
-    /** {@inheritDoc} */
-    public void info( String content )
-    {
-        logger.info( content );
-    }
-
-    /** {@inheritDoc} */
-    public void info( String content, Throwable error )
-    {
-        logger.info( content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void info( Throwable error )
-    {
-        logger.info( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public boolean isWarnEnabled()
-    {
-        return logger.isWarnEnabled();
-    }
-
-    /** {@inheritDoc} */
-    public void warn( String content )
-    {
-        logger.warn( content );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( String content, Throwable error )
-    {
-        logger.warn( content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        logger.warn( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public boolean isErrorEnabled()
-    {
-        return logger.isErrorEnabled();
-    }
-
-    /** {@inheritDoc} */
-    public void error( String content )
-    {
-        logger.error( content );
-    }
-
-    /** {@inheritDoc} */
-    public void error( String content, Throwable error )
-    {
-        logger.error( content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void error( Throwable error )
-    {
-        logger.error( "", error );
-    }
-}
diff --git a/maven-scm-plugin/pom.xml b/maven-scm-plugin/pom.xml
index e6941441b..89a0b139b 100644
--- a/maven-scm-plugin/pom.xml
+++ b/maven-scm-plugin/pom.xml
@@ -55,6 +55,12 @@
       <version>${mavenVersion}</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>provided</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-compat</artifactId>
@@ -98,11 +104,11 @@
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>file-management</artifactId>
-      <version>1.2.1</version>
+      <version>3.0.0</version>
     </dependency>
 
     <dependency>
-      <groupId>org.sonatype.plexus</groupId>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-sec-dispatcher</artifactId>
     </dependency>
 
@@ -140,6 +146,7 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-invoker-plugin</artifactId>
         <configuration>
           <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
@@ -189,18 +196,11 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-plugin-plugin</artifactId>
-          <version>${mavenPluginToolsVersion}</version>
+          <version>3.6.4</version>
           <configuration>
             <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
           </configuration>
           <executions>
-            <execution>
-              <id>mojo-descriptor</id>
-              <phase>process-classes</phase>
-              <goals>
-                <goal>descriptor</goal>
-              </goals>
-            </execution>
             <execution>
               <id>help-goal</id>
               <goals>
@@ -218,7 +218,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>${mavenPluginToolsVersion}</version>
       </plugin>
     </plugins>
   </reporting>
diff --git a/maven-scm-providers/maven-scm-provider-hg/pom.xml b/maven-scm-providers/maven-scm-provider-hg/pom.xml
index fe860fe0f..cf4190cd9 100644
--- a/maven-scm-providers/maven-scm-provider-hg/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-hg/pom.xml
@@ -48,21 +48,11 @@
     </contributor>
   </contributors>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>        
-        </executions>        
-      </plugin>
-    </plugins>
-  </build>
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+  </dependencies>
+
 </project>
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
index 2e233db92..5d0790475 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.hg;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
@@ -63,10 +66,9 @@ import org.apache.maven.scm.repository.UnknownRepositoryStructure;
  * <a href="http://www.selenic.com/mercurial">http://www.selenic.com/mercurial</a>
  *
  * @author <a href="mailto:thurner.rupert@ymono.net">thurner rupert</a>
- *
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider"
- * role-hint="hg"
  */
+@Singleton
+@Named( "hg" )
 public class HgScmProvider
     extends AbstractScmProvider
 {
@@ -78,7 +80,7 @@ public class HgScmProvider
 
     private static class HgUrlParserResult
     {
-        private List<String> messages = new ArrayList<String>();
+        private final List<String> messages = new ArrayList<>();
 
         private ScmProviderRepository repository;
     }
diff --git a/maven-scm-providers/maven-scm-provider-local/pom.xml b/maven-scm-providers/maven-scm-provider-local/pom.xml
index 0fb552f9c..47146250b 100644
--- a/maven-scm-providers/maven-scm-provider-local/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-local/pom.xml
@@ -33,21 +33,15 @@
   <name>Maven SCM Local Provider</name>
   <description>SCM Provider implementation for Local.</description>
 
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+  </dependencies>
+
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
       <plugin>
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
diff --git a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java
index 090764fb9..4979a4d8a 100644
--- a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java
+++ b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.local;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
@@ -51,19 +54,21 @@ import java.io.File;
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
- *
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="local"
  */
+@Singleton
+@Named( "local" )
 public class LocalScmProvider
     extends AbstractScmProvider
 {
     /** {@inheritDoc} */
+    @Override
     public String getScmType()
     {
         return "local";
     }
 
     /** {@inheritDoc} */
+    @Override
     public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
         throws ScmRepositoryException
     {
@@ -142,6 +147,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -153,6 +159,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -164,6 +171,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -175,6 +183,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     protected ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
                                             CommandParameters parameters )
         throws ScmException
@@ -187,6 +196,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet,
                                      CommandParameters parameters )
         throws ScmException
@@ -199,6 +209,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
                                        CommandParameters parameters )
         throws ScmException
@@ -211,6 +222,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -222,6 +234,7 @@ public class LocalScmProvider
     }
     
     /** {@inheritDoc} */
+    @Override
     protected MkdirScmResult mkdir( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
@@ -233,6 +246,7 @@ public class LocalScmProvider
     }
 
     /** {@inheritDoc} */
+    @Override
     public UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java
index d1f231aa2..335b65f67 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java
@@ -19,10 +19,15 @@ package org.apache.maven.scm.provider.git;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.scm.provider.git.command.GitCommand;
 
 import java.io.File;
 
+@Singleton
+@Named( "git" )
 public class TestGitScmProvider
     extends AbstractGitScmProvider
 {
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 3e99a4fee..000000000
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<component-set>
-  <components>
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>git</role-hint>
-      <implementation>org.apache.maven.scm.provider.git.TestGitScmProvider</implementation>
-    </component>
-  </components>
-</component-set>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
index 3cf0b9e37..44c60590f 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml
@@ -34,6 +34,10 @@
   <description>Executable implementation for SCM Git Provider.</description>
 
   <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
@@ -55,21 +59,4 @@
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>        
-        </executions>        
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
index 9cb43342b..50943c12f 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.git.gitexe;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 
 import org.apache.maven.scm.ScmException;
@@ -45,9 +48,9 @@ import org.apache.maven.scm.repository.ScmRepositoryException;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
- *
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="git"
  */
+@Singleton
+@Named( "git" )
 public class GitExeScmProvider
     extends AbstractGitScmProvider
 {
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
index ce46192b3..de6d8af10 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
@@ -36,46 +36,48 @@
   </description>
 
   <dependencies>
-    <!-- Test -->
     <dependency>
-      <groupId>org.apache.maven.scm</groupId>
-      <artifactId>maven-scm-provider-git-commons</artifactId>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
-      <artifactId>maven-scm-provider-gittest</artifactId>
-      <scope>test</scope>
+      <artifactId>maven-scm-provider-git-commons</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
       <version>4.5.4.201711221230-r</version>
     </dependency>
 
+    <!-- Test -->
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-provider-gittest</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
-      <version>1.7.25</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
+<!--      <plugin>-->
+<!--        <groupId>org.codehaus.plexus</groupId>-->
+<!--        <artifactId>plexus-component-metadata</artifactId>-->
+<!--        <executions>-->
+<!--          <execution>-->
+<!--            <id>create-component-descriptor</id>-->
+<!--            <phase>generate-resources</phase>-->
+<!--            <goals>-->
+<!--              <goal>generate-metadata</goal>-->
+<!--            </goals>-->
+<!--          </execution>-->
+<!--        </executions>-->
+<!--      </plugin>-->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java
index 0c6d351c9..952ebc7a7 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.git.jgit;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 
 import org.apache.maven.scm.ScmException;
@@ -26,7 +29,6 @@ import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.command.info.InfoScmResult;
 import org.apache.maven.scm.provider.git.AbstractGitScmProvider;
 import org.apache.maven.scm.provider.git.command.GitCommand;
-import org.apache.maven.scm.provider.git.command.info.GitInfoItem;
 import org.apache.maven.scm.provider.git.jgit.command.add.JGitAddCommand;
 import org.apache.maven.scm.provider.git.jgit.command.blame.JGitBlameCommand;
 import org.apache.maven.scm.provider.git.jgit.command.branch.JGitBranchCommand;
@@ -45,15 +47,17 @@ import org.apache.maven.scm.repository.ScmRepositoryException;
 /**
  * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
  * @author Dominik Bartholdi (imod)
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="jgit"
  * @since 1.9
  */
+@Singleton
+@Named( "jgit" )
 public class JGitScmProvider
     extends AbstractGitScmProvider
 {
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getAddCommand()
     {
         return new JGitAddCommand();
@@ -62,6 +66,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getBranchCommand()
     {
         return new JGitBranchCommand();
@@ -70,6 +75,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getChangeLogCommand()
     {
         return new JGitChangeLogCommand();
@@ -78,6 +84,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getCheckInCommand()
     {
         return new JGitCheckInCommand();
@@ -86,6 +93,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getCheckOutCommand()
     {
         return new JGitCheckOutCommand();
@@ -94,6 +102,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getDiffCommand()
     {
         return new JGitDiffCommand();
@@ -102,6 +111,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getExportCommand()
     {
         throw new UnsupportedOperationException( "getExportCommand" );
@@ -110,6 +120,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getRemoveCommand()
     {
         throw new UnsupportedOperationException( "getRemoveCommand" );
@@ -118,6 +129,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getStatusCommand()
     {
         return new JGitStatusCommand();
@@ -126,6 +138,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getTagCommand()
     {
         return new JGitTagCommand();
@@ -134,6 +147,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getUntagCommand()
     {
         return new JGitUntagCommand();
@@ -142,6 +156,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getUpdateCommand()
     {
         throw new UnsupportedOperationException( "getUpdateCommand" );
@@ -158,6 +173,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     public GitCommand getInfoCommand()
     {
         return new JGitInfoCommand();
@@ -166,6 +182,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected String getRepositoryURL( File path )
         throws ScmException
     {
@@ -181,12 +198,13 @@ public class JGitScmProvider
                     + " items returned by the info command" );
         }
 
-        return ( (GitInfoItem) result.getInfoItems().get( 0 ) ).getURL();
+        return ( result.getInfoItems().get( 0 ) ).getURL();
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getBlameCommand()
     {
         return new JGitBlameCommand();
@@ -195,6 +213,7 @@ public class JGitScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected GitCommand getRemoteInfoCommand()
     {
         return new JGitRemoteInfoCommand();
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
index 53730cd24..3630d31ad 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml
@@ -33,6 +33,13 @@
   <name>Maven SCM Subversion Provider - Common library</name>
   <description>Common library for SCM SVN Provider. Includes the svn-settings.xml configuration model.</description>
 
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+  </dependencies>
+
   <build>
     <plugins>
       <plugin>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java
index 7c7afa807..a582fbbed 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.svn;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -26,6 +29,8 @@ import org.apache.maven.scm.provider.svn.command.SvnCommand;
 
 import java.io.File;
 
+@Singleton
+@Named( "svn" )
 public class TestSvnScmProvider
     extends AbstractSvnScmProvider
 {
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 63ae5676e..000000000
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<component-set>
-  <components>
-    <component>
-      <role>org.apache.maven.scm.provider.ScmProvider</role>
-      <role-hint>svn</role-hint>
-      <implementation>org.apache.maven.scm.provider.svn.TestSvnScmProvider</implementation>
-    </component>
-  </components>
-</component-set>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
index 13cb5b488..83dcefb4e 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
@@ -40,6 +40,10 @@
   </contributors>
 
   <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svn-commons</artifactId>
@@ -62,21 +66,21 @@
 	</dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>create-component-descriptor</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+<!--  <build>-->
+<!--    <plugins>-->
+<!--      <plugin>-->
+<!--        <groupId>org.codehaus.plexus</groupId>-->
+<!--        <artifactId>plexus-component-metadata</artifactId>-->
+<!--        <executions>-->
+<!--          <execution>-->
+<!--            <id>create-component-descriptor</id>-->
+<!--            <phase>generate-resources</phase>-->
+<!--            <goals>-->
+<!--              <goal>generate-metadata</goal>-->
+<!--            </goals>-->
+<!--          </execution>-->
+<!--        </executions>-->
+<!--      </plugin>-->
+<!--    </plugins>-->
+<!--  </build>-->
 </project>
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
index ddf34605e..747b24cfd 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
@@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.svn.svnexe;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 
 import org.apache.maven.scm.CommandParameters;
@@ -50,15 +53,16 @@ import org.apache.maven.scm.repository.ScmRepositoryException;
 
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
- *
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="svn"
  */
+@Singleton
+@Named( "svn" )
 public class SvnExeScmProvider
     extends AbstractSvnScmProvider
 {
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getAddCommand()
     {
         return new SvnAddCommand();
@@ -67,6 +71,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getBranchCommand()
     {
         return new SvnBranchCommand();
@@ -75,6 +80,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getChangeLogCommand()
     {
         return new SvnChangeLogCommand();
@@ -83,6 +89,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getCheckInCommand()
     {
         return new SvnCheckInCommand();
@@ -91,6 +98,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getCheckOutCommand()
     {
         return new SvnCheckOutCommand();
@@ -99,6 +107,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getDiffCommand()
     {
         return new SvnDiffCommand();
@@ -107,6 +116,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getExportCommand()
     {
         return new SvnExeExportCommand();
@@ -115,6 +125,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getRemoveCommand()
     {
         return new SvnRemoveCommand();
@@ -123,6 +134,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getStatusCommand()
     {
         return new SvnStatusCommand();
@@ -131,6 +143,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getTagCommand()
     {
         return new SvnTagCommand();
@@ -139,6 +152,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getUntagCommand()
     {
         return new SvnUntagCommand();
@@ -147,6 +161,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getUpdateCommand()
     {
         return new SvnUpdateCommand();
@@ -155,11 +170,13 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getListCommand()
     {
         return new SvnListCommand();
     }
 
+    @Override
     public SvnCommand getInfoCommand()
     {
         return new SvnInfoCommand();
@@ -168,6 +185,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getBlameCommand()
     {
         return new SvnBlameCommand();
@@ -176,6 +194,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected SvnCommand getMkdirCommand()
     {
         return new SvnMkdirCommand();
@@ -184,6 +203,7 @@ public class SvnExeScmProvider
     /**
      * {@inheritDoc}
      */
+    @Override
     protected String getRepositoryURL( File path )
         throws ScmException
     {
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java
index a6f0511d1..ea0eb46eb 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java
@@ -25,8 +25,9 @@ import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.DefaultLog;
 import org.apache.maven.scm.util.ConsumerUtils;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.logging.Logger;
 import org.junit.Assert;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -46,7 +47,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 public class SvnChangeLogConsumerTest
     extends PlexusTestCase
 {
-    Logger logger;
+    Logger logger = LoggerFactory.getLogger( getClass() );
 
     SvnChangeLogConsumer consumer;
 
@@ -55,8 +56,6 @@ public class SvnChangeLogConsumerTest
         throws Exception
     {
         super.setUp();
-
-        logger = getContainer().getLogger();
         consumer = new SvnChangeLogConsumer( new DefaultLog(), null );
     }
 
diff --git a/maven-scm-test/pom.xml b/maven-scm-test/pom.xml
index a8315a5ee..4a14ca645 100644
--- a/maven-scm-test/pom.xml
+++ b/maven-scm-test/pom.xml
@@ -43,8 +43,31 @@
       <artifactId>maven-scm-manager-plexus</artifactId>
     </dependency>
 
+    <!-- runtime bits needed to construct Plexus and others -->
     <dependency>
-      <groupId>org.sonatype.plexus</groupId>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-classworlds</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-component-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.inject</groupId>
+      <artifactId>guice</artifactId>
+      <classifier>no_aop</classifier>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-sec-dispatcher</artifactId>
     </dependency>
 
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
index d354de4d2..a447dc803 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
@@ -21,6 +21,8 @@ package org.apache.maven.scm;
 
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
@@ -77,6 +79,12 @@ public abstract class ScmTestCase
         scmManager = null;
     }
 
+    @Override
+    protected void customizeContainerConfiguration( final ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_INDEX ).setAutoWiring( true );
+    }
+
     /**
      * @return default location of the test read/write repository
      */
@@ -132,7 +140,7 @@ public abstract class ScmTestCase
     {
         if ( scmManager == null )
         {
-            scmManager = (ScmManager) lookup( ScmManager.ROLE );
+            scmManager = lookup( ScmManager.class );
         }
 
         return scmManager;
@@ -150,7 +158,7 @@ public abstract class ScmTestCase
     {
         if ( secDispatcher == null )
         {
-            secDispatcher = (SecDispatcher) lookup( SecDispatcher.ROLE, "mng-4384" );
+            secDispatcher = (SecDispatcher) lookup( SecDispatcher.class, "mng-4384" );
         }
 
         return secDispatcher;
diff --git a/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java b/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java
index 4fbfcdb1f..ce4ee013a 100644
--- a/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java
+++ b/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java
@@ -52,7 +52,7 @@ public class ScmManagerStubTest
     {
         super.setUp();
 
-        messages = new ArrayList<String>( 0 );
+        messages = new ArrayList<>( 0 );
         scmProvider = new ScmProviderStub();
         scmRepository = new ScmRepositoryStub();
 
diff --git a/pom.xml b/pom.xml
index f7ffdae84..fc7a0667b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,8 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven-parent</artifactId>
-    <version>34</version>
+    <version>36</version>
+    <relativePath/>
   </parent>
 
   <groupId>org.apache.maven.scm</groupId>
@@ -182,20 +183,52 @@
       <!-- end providers declaration -->
 
       <!-- Plexus -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>1.7.36</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-simple</artifactId>
+        <version>1.7.36</version>
+      </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-container-default</artifactId>
-        <version>1.0-alpha-9</version>
+        <artifactId>plexus-classworlds</artifactId>
+        <version>2.6.0</version>
+      </dependency>
+      <dependency>
+        <groupId>javax.inject</groupId>
+        <artifactId>javax.inject</artifactId>
+        <version>1</version>
+      </dependency>
+      <dependency>
+        <groupId>org.eclipse.sisu</groupId>
+        <artifactId>org.eclipse.sisu.plexus</artifactId>
+        <version>${sisuVersion}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-component-annotations</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>com.google.inject</groupId>
+        <artifactId>guice</artifactId>
+        <classifier>no_aop</classifier>
+        <version>4.2.3</version>
       </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-utils</artifactId>
-        <version>3.3.1</version>
+        <version>3.4.2</version>
       </dependency>
       <dependency>
-          <groupId>org.sonatype.plexus</groupId>
-          <artifactId>plexus-sec-dispatcher</artifactId>
-          <version>1.4</version>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-sec-dispatcher</artifactId>
+        <version>2.0</version>
       </dependency>
 
       <dependency>
@@ -206,7 +239,7 @@
       <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
-        <version>2.6</version>
+        <version>2.11.0</version>
       </dependency>
 
       <!-- Test -->
@@ -277,6 +310,10 @@
       </plugins>
     </pluginManagement>
     <plugins>
+      <plugin>
+        <groupId>org.eclipse.sisu</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+      </plugin>
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>animal-sniffer-maven-plugin</artifactId>
@@ -298,29 +335,6 @@
           </execution>
         </executions>
       </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <dependencies>
-          <dependency>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>extra-enforcer-rules</artifactId>
-            <version>1.3</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <tags>
-            <tag>
-              <name>plexus.component</name>
-              <placement>X</placement>
-            </tag>
-          </tags>
-        </configuration>
-      </plugin>
     </plugins>
   </build>
 
diff --git a/src/site/apt/guide/new_provider.apt b/src/site/apt/guide/new_provider.apt
index 603601a01..7cd9454ef 100644
--- a/src/site/apt/guide/new_provider.apt
+++ b/src/site/apt/guide/new_provider.apt
@@ -83,13 +83,15 @@ How to write a new SCM provider?
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <version>1.7.1</version>
+        <groupId>org.eclipse.sisu</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+        <version>${sisuVersion}</version>
         <executions>
           <execution>
+            <id>index-project</id>
             <goals>
-              <goal>generate-metadata</goal>
+              <goal>main-index</goal>
+              <goal>test-index</goal>
             </goals>
           </execution>
         </executions>
@@ -99,8 +101,8 @@ How to write a new SCM provider?
 </project>
 +------------------------------------------+
 
-  The plexus-component-metadata maven plugin will generate the Plexus meta-data file used by the
-  Maven SCM manager.
+  The SISU maven plugin will generate the components meta-data file used by the
+  DI to discover them inject them to SCM manager.
 
 * Create an SCM Provider Repository class
 
@@ -142,8 +144,10 @@ import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 
 /**
- * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="provider_name"
+ * My provider.
  */
+@Singleton
+@Named( "provider_name" )
 public class MyScmProvider
     extends AbstractScmProvider
 {
@@ -167,8 +171,8 @@ public class MyScmProvider
 }
 +------------------------------------------+
 
-  The <plexus.component> javadoc tag will be used by the plexus maven plugin,
-  declared in the POM, to generate plexus meta-data.
+  The JSR330 annotations will be used by the SISU maven plugin,
+  declared in the POM, to generate component meta-data.
   Generally, we use the string just after <scm:> in the scm URL as the
   <provider_name>.
 


[maven-scm] 04/08: Cleanup logging

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 135507cec8c0dddd9e539522ef445a53d69c0b39
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 20 13:03:58 2022 +0200

    Cleanup logging
---
 .../org/apache/maven/scm/command/AbstractCommand.java    |  3 ++-
 .../java/org/apache/maven/scm/log/Slf4jScmLogger.java    |  7 +------
 .../java/org/apache/maven/scm/util/AbstractConsumer.java |  2 +-
 .../org/apache/maven/scm/client/cli/MavenScmCli.java     | 16 ++++++++--------
 .../scm/provider/git/command/diff/GitDiffConsumer.java   | 14 ++++++--------
 .../git/gitexe/command/AbstractFileCheckingConsumer.java | 10 ++++------
 .../git/gitexe/command/diff/GitDiffRawConsumer.java      | 10 ++++------
 .../gitexe/command/remoteinfo/GitRemoteInfoConsumer.java | 10 ++++------
 .../git/gitexe/command/remove/GitRemoveConsumer.java     | 10 ++++------
 .../git/gitexe/command/status/GitStatusConsumer.java     | 10 ++++------
 .../maven-scm-provider-jgit/pom.xml                      | 10 ++++++++++
 .../scm/provider/svn/command/diff/SvnDiffConsumer.java   | 14 ++++++--------
 .../svn/svnexe/command/AbstractFileCheckingConsumer.java | 10 ++++------
 .../provider/svn/svnexe/command/add/SvnAddConsumer.java  | 10 ++++------
 .../provider/svn/svnexe/command/info/SvnInfoCommand.java |  2 +-
 .../svn/svnexe/command/info/SvnInfoConsumer.java         | 12 +++++++++---
 .../provider/svn/svnexe/command/list/SvnListCommand.java |  2 +-
 .../svn/svnexe/command/list/SvnListConsumer.java         | 12 +++++++++---
 .../svn/svnexe/command/mkdir/SvnMkdirConsumer.java       |  8 +++-----
 .../svn/svnexe/command/remove/SvnRemoveConsumer.java     | 10 ++++------
 .../svn/svnexe/command/status/SvnStatusConsumer.java     | 13 +++++--------
 pom.xml                                                  |  7 ++++++-
 22 files changed, 100 insertions(+), 102 deletions(-)

diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/command/AbstractCommand.java b/maven-scm-api/src/main/java/org/apache/maven/scm/command/AbstractCommand.java
index 81785297e..4673e0df9 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/command/AbstractCommand.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/command/AbstractCommand.java
@@ -24,6 +24,7 @@ import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.log.Slf4jScmLogger;
 import org.apache.maven.scm.provider.ScmProviderRepository;
 
 /**
@@ -34,7 +35,7 @@ import org.apache.maven.scm.provider.ScmProviderRepository;
 public abstract class AbstractCommand
     implements Command
 {
-    private ScmLogger logger;
+    private ScmLogger logger = new Slf4jScmLogger( getClass() );
 
     protected abstract ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
                                                  CommandParameters parameters )
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
index 268acff98..c978f9190 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
@@ -30,15 +30,10 @@ import static java.util.Objects.requireNonNull;
  * @since TBD
  */
 public class Slf4jScmLogger
-    implements ScmLogger
+        implements ScmLogger
 {
     private final Logger logger;
 
-    public Slf4jScmLogger()
-    {
-        this( Slf4jScmLogger.class );
-    }
-
     public Slf4jScmLogger( final Class<?> owner )
     {
         this( LoggerFactory.getLogger( requireNonNull( owner ) ) );
diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
index 20e30f5ca..144ff5b87 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java
@@ -38,7 +38,7 @@ import static java.util.Objects.requireNonNull;
 public abstract class AbstractConsumer
     implements StreamConsumer
 {
-    private final ScmLogger logger;
+    protected final ScmLogger logger;
 
     /**
      * AbstractConsumer constructor.
diff --git a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
index 17b5f7f7b..c27911fcd 100644
--- a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
+++ b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java
@@ -69,14 +69,12 @@ public class MavenScmCli
         scmManager = plexus.lookup( ScmManager.class );
     }
 
-    /**
-     * Method that creates Plexus container: we must create a Plexus container, as we must pick up any possible
-     * Plexus XML component definition (not used since Maven 3.8.1, but present in older Mavens).
-     */
-    private PlexusContainer createPlexusContainer() {
+    private PlexusContainer createPlexusContainer()
+    {
         final Context context = new DefaultContext();
         String path = System.getProperty( "basedir" );
-        if (path == null) {
+        if ( path == null )
+        {
             path = new File( "" ).getAbsolutePath();
         }
         context.put( "basedir", path );
@@ -86,10 +84,12 @@ public class MavenScmCli
                 .setContext( context.getContextData() )
                 .setClassPathScanning( PlexusConstants.SCANNING_CACHE )
                 .setAutoWiring( true );
-        try {
+        try
+        {
             return new DefaultPlexusContainer( plexusConfiguration );
         }
-        catch ( PlexusContainerException e ) {
+        catch ( PlexusContainerException e )
+        {
             throw new IllegalStateException( "Could not create Plexus container", e );
         }
     }
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
index 67f7f52a1..e7ba3361e 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/command/diff/GitDiffConsumer.java
@@ -22,7 +22,7 @@ package org.apache.maven.scm.provider.git.command.diff;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -39,7 +39,7 @@ import java.util.regex.Pattern;
  *
  */
 public class GitDiffConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
     // diff --git a/readme.txt b/readme.txt
     // index fea1611..9e131cf 100644
@@ -78,17 +78,15 @@ public class GitDiffConsumer
 
     private static final String DELETED_FILE_MODE_TOKEN = "deleted file mode ";
 
-    private ScmLogger logger;
-
     private String currentFile;
 
     private StringBuilder currentDifference;
 
-    private List<ScmFile> changedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> changedFiles = new ArrayList<>();
 
-    private Map<String, CharSequence> differences = new HashMap<String, CharSequence>();
+    private final Map<String, CharSequence> differences = new HashMap<>();
 
-    private StringBuilder patch = new StringBuilder();
+    private final StringBuilder patch = new StringBuilder();
 
     // ----------------------------------------------------------------------
     //
@@ -96,7 +94,7 @@ public class GitDiffConsumer
 
     public GitDiffConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/AbstractFileCheckingConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/AbstractFileCheckingConsumer.java
index 696dc9884..cbba785ee 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/AbstractFileCheckingConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/AbstractFileCheckingConsumer.java
@@ -21,7 +21,7 @@ package org.apache.maven.scm.provider.git.gitexe.command;
 
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -34,13 +34,11 @@ import java.util.List;
  *
  */
 public abstract class AbstractFileCheckingConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    protected ScmLogger logger;
-
     protected File workingDirectory;
 
-    private List<ScmFile> files = new ArrayList<ScmFile>();
+    private final List<ScmFile> files = new ArrayList<>();
 
     protected int revision;
 
@@ -48,7 +46,7 @@ public abstract class AbstractFileCheckingConsumer
 
     public AbstractFileCheckingConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
+        super( logger );
         this.workingDirectory = workingDirectory;
     }
 
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/diff/GitDiffRawConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/diff/GitDiffRawConsumer.java
index 4f0ce1a70..0b5d74b9d 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/diff/GitDiffRawConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/diff/GitDiffRawConsumer.java
@@ -25,19 +25,17 @@ import java.util.List;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.StreamConsumer;
 
 /**
  * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
  *
  */
 public class GitDiffRawConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private ScmLogger logger;
-
-    private List<ScmFile> changedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> changedFiles = new ArrayList<>();
 
     // ----------------------------------------------------------------------
     //
@@ -45,7 +43,7 @@ public class GitDiffRawConsumer
 
     public GitDiffRawConsumer( ScmLogger logger )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
index b3d022ce1..22dbb4aaf 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
@@ -21,7 +21,7 @@ package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
 
 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.HashMap;
 import java.util.regex.Matcher;
@@ -31,7 +31,7 @@ import java.util.regex.Pattern;
  * @author Bertrand Paquet
  */
 public class GitRemoteInfoConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
 
     /**
@@ -44,9 +44,7 @@ public class GitRemoteInfoConsumer
      */
     private static final Pattern TAGS_PATTERN = Pattern.compile( "^(.*)\\s+refs/tags/(.*)" );
 
-    private ScmLogger logger;
-
-    private RemoteInfoScmResult remoteInfoScmResult;
+    private final RemoteInfoScmResult remoteInfoScmResult;
 
     // ----------------------------------------------------------------------
     //
@@ -54,7 +52,7 @@ public class GitRemoteInfoConsumer
 
     public GitRemoteInfoConsumer( ScmLogger logger, String commandLine )
     {
-        this.logger = logger;
+        super( logger );
         this.remoteInfoScmResult =
             new RemoteInfoScmResult( commandLine, new HashMap<String, String>(), new HashMap<String, String>() );
     }
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remove/GitRemoveConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remove/GitRemoveConsumer.java
index 730a5aae4..9c623abe3 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remove/GitRemoveConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remove/GitRemoveConsumer.java
@@ -22,7 +22,7 @@ package org.apache.maven.scm.provider.git.gitexe.command.remove;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,16 +35,14 @@ import java.util.regex.Pattern;
  *
  */
 public class GitRemoveConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
     /**
      * The pattern used to match deleted file lines
      */
     private static final Pattern REMOVED_PATTERN = Pattern.compile( "^rm\\s'(.*)'" );
 
-    private ScmLogger logger;
-
-    private List<ScmFile> removedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> removedFiles = new ArrayList<>();
 
     // ----------------------------------------------------------------------
     //
@@ -52,7 +50,7 @@ public class GitRemoveConsumer
 
     public GitRemoveConsumer( ScmLogger logger )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
index d01eb215b..11342de72 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java
@@ -33,13 +33,13 @@ import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 /**
  * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
  */
 public class GitStatusConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
 
     /**
@@ -62,8 +62,6 @@ public class GitStatusConsumer
      */
     private static final Pattern RENAMED_PATTERN = Pattern.compile( "^R  (.*) -> (.*)$" );
 
-    private ScmLogger logger;
-
     private File workingDirectory;
 
     private ScmFileSet scmFileSet;
@@ -71,7 +69,7 @@ public class GitStatusConsumer
     /**
      * Entries are relative to working directory, not to the repositoryroot
      */
-    private List<ScmFile> changedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> changedFiles = new ArrayList<>();
 
     private URI relativeRepositoryPath;
     
@@ -87,7 +85,7 @@ public class GitStatusConsumer
      */
     public GitStatusConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
+        super( logger );
         this.workingDirectory = workingDirectory;
     }
 
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
index 5c6a0aae5..cebff98df 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml
@@ -48,6 +48,16 @@
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
       <version>4.5.4.201711221230-r</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
     </dependency>
 
     <!-- Test -->
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/diff/SvnDiffConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/diff/SvnDiffConsumer.java
index 088af74d7..9b8301b98 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/diff/SvnDiffConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/command/diff/SvnDiffConsumer.java
@@ -22,7 +22,7 @@ package org.apache.maven.scm.provider.svn.command.diff;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -36,7 +36,7 @@ import java.util.Map;
  *
  */
 public class SvnDiffConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
     //
     // Index: plugin.jelly
@@ -63,17 +63,15 @@ public class SvnDiffConsumer
 
     private static final String NO_NEWLINE_TOKEN = "\\ No newline at end of file";
 
-    private ScmLogger logger;
-
     private String currentFile;
 
     private StringBuilder currentDifference;
 
-    private List<ScmFile> changedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> changedFiles = new ArrayList<ScmFile>();
 
-    private Map<String, CharSequence> differences = new HashMap<String, CharSequence>();
+    private final Map<String, CharSequence> differences = new HashMap<String, CharSequence>();
 
-    private StringBuilder patch = new StringBuilder();
+    private final StringBuilder patch = new StringBuilder();
 
     // ----------------------------------------------------------------------
     //
@@ -81,7 +79,7 @@ public class SvnDiffConsumer
 
     public SvnDiffConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/AbstractFileCheckingConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/AbstractFileCheckingConsumer.java
index 0a92d6a56..bbf9f74e8 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/AbstractFileCheckingConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/AbstractFileCheckingConsumer.java
@@ -27,20 +27,18 @@ import java.util.List;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 /**
  * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
  *
  */
 public abstract class AbstractFileCheckingConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    protected ScmLogger logger;
-
     protected File workingDirectory;
 
-    private List<ScmFile> files = new ArrayList<ScmFile>();
+    private final List<ScmFile> files = new ArrayList<>();
 
     protected int revision;
 
@@ -48,7 +46,7 @@ public abstract class AbstractFileCheckingConsumer
 
     public AbstractFileCheckingConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
+        super( logger );
         this.workingDirectory = workingDirectory;
     }
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/add/SvnAddConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/add/SvnAddConsumer.java
index bf5384ffb..237a2bb96 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/add/SvnAddConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/add/SvnAddConsumer.java
@@ -22,7 +22,7 @@ package org.apache.maven.scm.provider.svn.svnexe.command.add;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,11 +32,9 @@ import java.util.List;
  *
  */
 public class SvnAddConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private ScmLogger logger;
-
-    private List<ScmFile> addedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> addedFiles = new ArrayList<>();
 
     // ----------------------------------------------------------------------
     //
@@ -44,7 +42,7 @@ public class SvnAddConsumer
 
     public SvnAddConsumer( ScmLogger logger )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
index 438c7c777..d30ea6bda 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoCommand.java
@@ -61,7 +61,7 @@ public class SvnInfoCommand
     {
         Commandline cl = createCommandLine( repository, fileSet, recursive, revision );
 
-        SvnInfoConsumer consumer = new SvnInfoConsumer();
+        SvnInfoConsumer consumer = new SvnInfoConsumer( getLogger() );
 
         CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoConsumer.java
index e4f824d68..05f7b8f08 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/info/SvnInfoConsumer.java
@@ -23,19 +23,25 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.maven.scm.command.info.InfoItem;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 /**
  * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
  *
  */
 public class SvnInfoConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private List<InfoItem> infoItems = new ArrayList<InfoItem>();
+    private final List<InfoItem> infoItems = new ArrayList<>();
 
     private InfoItem currentItem = new InfoItem();
 
+    public SvnInfoConsumer( ScmLogger logger )
+    {
+        super( logger );
+    }
+
     /** {@inheritDoc} */
     public void consumeLine( String s )
     {
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
index 553b080c5..f888d50f2 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListCommand.java
@@ -57,7 +57,7 @@ public class SvnListCommand
     {
         Commandline cl = createCommandLine( (SvnScmProviderRepository) repository, fileSet, recursive, version );
 
-        SvnListConsumer consumer = new SvnListConsumer();
+        SvnListConsumer consumer = new SvnListConsumer( getLogger() );
 
         CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
 
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListConsumer.java
index b7d7c556d..c87a167a7 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/list/SvnListConsumer.java
@@ -21,7 +21,8 @@ package org.apache.maven.scm.provider.svn.svnexe.command.list;
 
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -31,9 +32,14 @@ import java.util.List;
  *
  */
 public class SvnListConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private List<ScmFile> files = new ArrayList<ScmFile>();
+    private final List<ScmFile> files = new ArrayList<>();
+
+    public SvnListConsumer( ScmLogger logger )
+    {
+        super( logger );
+    }
 
     // ----------------------------------------------------------------------
     // StreamConsumer Implementation
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirConsumer.java
index 0b9ebe6ac..54c287f8b 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/mkdir/SvnMkdirConsumer.java
@@ -25,18 +25,16 @@ import java.util.List;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.StreamConsumer;
 
 /**
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  *
  */
 public class SvnMkdirConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private ScmLogger logger;
-
     private static final String COMMITTED_REVISION_TOKEN = "Committed revision";
 
     private int revision;
@@ -45,7 +43,7 @@ public class SvnMkdirConsumer
     
     public SvnMkdirConsumer( ScmLogger logger )
     {
-        this.logger = logger;
+        super( logger );
     }
     
     /** {@inheritDoc} */
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remove/SvnRemoveConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remove/SvnRemoveConsumer.java
index 94ed57dad..b9fdbba12 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remove/SvnRemoveConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remove/SvnRemoveConsumer.java
@@ -22,7 +22,7 @@ package org.apache.maven.scm.provider.svn.svnexe.command.remove;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
-import org.codehaus.plexus.util.cli.StreamConsumer;
+import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -33,11 +33,9 @@ import java.util.List;
  *
  */
 public class SvnRemoveConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private ScmLogger logger;
-
-    private List<ScmFile> removedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> removedFiles = new ArrayList<>();
 
     // ----------------------------------------------------------------------
     //
@@ -45,7 +43,7 @@ public class SvnRemoveConsumer
 
     public SvnRemoveConsumer( ScmLogger logger )
     {
-        this.logger = logger;
+        super( logger );
     }
 
     // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java
index db40c4824..1fcaec5ce 100644
--- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java
+++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/status/SvnStatusConsumer.java
@@ -22,8 +22,8 @@ package org.apache.maven.scm.provider.svn.svnexe.command.status;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.StreamConsumer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -34,13 +34,11 @@ import java.util.List;
  *
  */
 public class SvnStatusConsumer
-    implements StreamConsumer
+        extends AbstractConsumer
 {
-    private ScmLogger logger;
+    private final File workingDirectory;
 
-    private File workingDirectory;
-
-    private List<ScmFile> changedFiles = new ArrayList<ScmFile>();
+    private final List<ScmFile> changedFiles = new ArrayList<>();
 
     // ----------------------------------------------------------------------
     //
@@ -48,8 +46,7 @@ public class SvnStatusConsumer
 
     public SvnStatusConsumer( ScmLogger logger, File workingDirectory )
     {
-        this.logger = logger;
-
+        super( logger );
         this.workingDirectory = workingDirectory;
     }
 
diff --git a/pom.xml b/pom.xml
index fc7a0667b..ee953d112 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,7 +127,7 @@
     <javaVersion>8</javaVersion>
     <maven.site.path>scm-archives/scm-LATEST</maven.site.path>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
-    <checkstyle.failOnViolation>false</checkstyle.failOnViolation>
+    <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
     <project.build.outputTimestamp>2022-01-08T20:02:10Z</project.build.outputTimestamp>
   </properties>
 
@@ -193,6 +193,11 @@
         <artifactId>slf4j-simple</artifactId>
         <version>1.7.36</version>
       </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>jcl-over-slf4j</artifactId>
+        <version>1.7.36</version>
+      </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-classworlds</artifactId>


[maven-scm] 03/08: guard for nulls

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch scm-979-deplexus
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit 4bc295584fea2286cd7afc279f93efb8cccc40fe
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 20 12:39:25 2022 +0200

    guard for nulls
---
 .../src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
index 7212a6d4e..268acff98 100644
--- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
+++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java
@@ -41,7 +41,7 @@ public class Slf4jScmLogger
 
     public Slf4jScmLogger( final Class<?> owner )
     {
-        this( LoggerFactory.getLogger( owner ) );
+        this( LoggerFactory.getLogger( requireNonNull( owner ) ) );
     }
 
     public Slf4jScmLogger( final Logger logger )