From a6fd4098c368baf828404beb685aa5c44a2d0ecd Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 6 Aug 2025 18:07:57 +0100 Subject: [PATCH 1/3] More specific exception handling --- .../java/org/apache/maven/scm/client/cli/MavenScmCli.java | 2 +- .../java/org/apache/maven/scm/plugin/AbstractScmMojo.java | 2 -- .../scm/provider/local/command/list/LocalListCommand.java | 7 ++++--- .../scm/provider/git/jgit/command/add/JGitAddCommand.java | 4 +++- .../provider/git/jgit/command/blame/JGitBlameCommand.java | 4 +++- .../git/jgit/command/branch/JGitBranchCommand.java | 3 ++- .../git/jgit/command/changelog/JGitChangeLogCommand.java | 2 +- .../git/jgit/command/checkin/JGitCheckInCommand.java | 4 +++- .../git/jgit/command/checkout/JGitCheckOutCommand.java | 4 +++- .../provider/git/jgit/command/diff/JGitDiffCommand.java | 2 +- .../provider/git/jgit/command/info/JGitInfoCommand.java | 2 +- .../provider/git/jgit/command/list/JGitListCommand.java | 4 +++- .../git/jgit/command/remoteinfo/JGitRemoteInfoCommand.java | 4 +++- .../git/jgit/command/remove/JGitRemoveCommand.java | 4 +++- .../git/jgit/command/status/JGitStatusCommand.java | 4 +++- .../scm/provider/git/jgit/command/tag/JGitTagCommand.java | 4 +++- .../provider/git/jgit/command/untag/JGitUntagCommand.java | 4 +++- 17 files changed, 40 insertions(+), 20 deletions(-) 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 e5a4f5ecf..217c81290 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 @@ -88,7 +88,7 @@ private PlexusContainer createPlexusContainer() { public void stop() { try { plexus.dispose(); - } catch (Exception ex) { + } catch (RuntimeException ex) { // ignore } } 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 cc1a8fd5b..ecfbab192 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 @@ -341,8 +341,6 @@ public ScmRepository getScmRepository() throws ScmException { } } - throw new ScmException("Can't load the scm provider.", e); - } catch (Exception e) { throw new ScmException("Can't load the scm provider.", e); } diff --git a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/list/LocalListCommand.java b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/list/LocalListCommand.java index 004346742..35dcd803c 100644 --- a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/list/LocalListCommand.java +++ b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/command/list/LocalListCommand.java @@ -19,6 +19,7 @@ package org.apache.maven.scm.provider.local.command.list; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -77,14 +78,14 @@ protected ListScmResult executeListCommand( return new LocalListScmResult(null, files); } - } catch (Exception e) { + } catch (IOException e) { return new ListScmResult(null, "The svn command failed.", e.getMessage(), false); } } - private List getFiles(File source, File directory, boolean recursive) throws Exception { + private List getFiles(File source, File directory, boolean recursive) throws IOException { if (!directory.exists()) { - throw new Exception("Directory '" + directory.getAbsolutePath() + "' doesn't exist."); + throw new IOException("Directory '" + directory.getAbsolutePath() + "' doesn't exist."); } List files = new ArrayList<>(); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/add/JGitAddCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/add/JGitAddCommand.java index 75396dd47..2820596e5 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/add/JGitAddCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/add/JGitAddCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.add; +import java.io.IOException; import java.util.List; import org.apache.maven.scm.ScmException; @@ -30,6 +31,7 @@ import org.apache.maven.scm.provider.git.command.GitCommand; import org.apache.maven.scm.provider.git.jgit.command.JGitUtils; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; /** * @author Mark Struberg @@ -60,7 +62,7 @@ protected ScmResult executeAddCommand( return new AddScmResult("JGit add", addedFiles); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit add failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/blame/JGitBlameCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/blame/JGitBlameCommand.java index 684074b6c..b8e1cc752 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/blame/JGitBlameCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/blame/JGitBlameCommand.java @@ -19,6 +19,7 @@ package org.apache.maven.scm.provider.git.jgit.command.blame; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -31,6 +32,7 @@ import org.apache.maven.scm.provider.git.command.GitCommand; import org.apache.maven.scm.provider.git.jgit.command.JGitUtils; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.blame.BlameResult; /** @@ -61,7 +63,7 @@ public BlameScmResult executeBlameCommand(ScmProviderRepository repo, ScmFileSet } return new BlameScmResult("JGit blame", lines); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit blame failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/branch/JGitBranchCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/branch/JGitBranchCommand.java index 30c238bf6..4f13589cd 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/branch/JGitBranchCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/branch/JGitBranchCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.branch; +import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.HashSet; @@ -134,7 +135,7 @@ protected ScmResult executeBranchCommand( } catch (PushException e) { logger.debug("Failed to push branch", e); return new BranchScmResult("JGit branch", "Failed to push changes: " + e.getMessage(), "", false); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit branch failed!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommand.java index b32ae91d1..8a8a20159 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/changelog/JGitChangeLogCommand.java @@ -152,7 +152,7 @@ protected ChangeLogScmResult executeChangeLogCommand( changeLogSet.setEndVersion(endVersion); return new ChangeLogScmResult("JGit changelog", changeLogSet); - } catch (Exception e) { + } catch (IOException e) { throw new ScmException("JGit changelog failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java index 34b4053b6..3813d0ffa 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java @@ -19,6 +19,7 @@ package org.apache.maven.scm.provider.git.jgit.command.checkin; import java.io.File; +import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Collections; @@ -50,6 +51,7 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Status; import org.eclipse.jgit.api.TransportConfigCallback; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.UserConfig; import org.eclipse.jgit.revwalk.RevCommit; @@ -189,7 +191,7 @@ public CheckInScmResult executeCommand(ScmProviderRepository repo, ScmFileSet fi } catch (PushException e) { logger.debug("Failed to push commits", e); return new CheckInScmResult("JGit checkin", "Failed to push changes: " + e.getMessage(), "", false); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit checkin failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java index e08419726..49df2cdd3 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java @@ -19,6 +19,7 @@ package org.apache.maven.scm.provider.git.jgit.command.checkout; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -48,6 +49,7 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.PullCommand; import org.eclipse.jgit.api.TransportConfigCallback; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.revwalk.RevCommit; @@ -208,7 +210,7 @@ && new File(fileSet.getBasedir(), ".git").exists() logger.debug("current branch: " + git.getRepository().getBranch()); return new CheckOutScmResult("checkout via JGit", listedFiles); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit checkout failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/diff/JGitDiffCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/diff/JGitDiffCommand.java index 3fc6cd84b..868f16de0 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/diff/JGitDiffCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/diff/JGitDiffCommand.java @@ -57,7 +57,7 @@ protected DiffScmResult executeDiffCommand( DiffScmResult diff = callDiff(git, startRevision, endRevision); git.getRepository().close(); return diff; - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit diff failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/info/JGitInfoCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/info/JGitInfoCommand.java index 06a93dc0c..75582bb4d 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/info/JGitInfoCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/info/JGitInfoCommand.java @@ -74,7 +74,7 @@ protected ScmResult executeCommand( } } return new InfoScmResult(infoItems, new ScmResult("JGit.resolve(HEAD)", "", objectId.toString(), true)); - } catch (Exception e) { + } catch (IOException e) { throw new ScmException("JGit resolve failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/list/JGitListCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/list/JGitListCommand.java index 2edeabdf2..2f94a378b 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/list/JGitListCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/list/JGitListCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.list; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -37,6 +38,7 @@ import org.apache.maven.scm.provider.git.jgit.command.ScmProviderAwareSshdSessionFactory; import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.transport.CredentialsProvider; import org.slf4j.Logger; @@ -82,7 +84,7 @@ protected ListScmResult executeListCommand( } return new ListScmResult("JGit ls-remote", list); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit ls-remote failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remoteinfo/JGitRemoteInfoCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remoteinfo/JGitRemoteInfoCommand.java index f02dbb305..971a5afd8 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remoteinfo/JGitRemoteInfoCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remoteinfo/JGitRemoteInfoCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.remoteinfo; +import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -36,6 +37,7 @@ import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.LsRemoteCommand; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.transport.CredentialsProvider; @@ -92,7 +94,7 @@ public RemoteInfoScmResult executeRemoteInfoCommand( } return new RemoteInfoScmResult("JGit remoteinfo", heads, tag); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit remoteinfo failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remove/JGitRemoveCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remove/JGitRemoveCommand.java index 4e47e7a3d..61c2dcc2b 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remove/JGitRemoveCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/remove/JGitRemoveCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.remove; +import java.io.IOException; import java.util.List; import org.apache.maven.scm.ScmException; @@ -30,6 +31,7 @@ import org.apache.maven.scm.provider.git.command.GitCommand; import org.apache.maven.scm.provider.git.jgit.command.JGitUtils; import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; /** * @author Georg Tsakumagos @@ -58,7 +60,7 @@ protected ScmResult executeRemoveCommand(ScmProviderRepository repository, ScmFi return new RemoveScmResult("JGit remove", removedFiles); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit remove failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/status/JGitStatusCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/status/JGitStatusCommand.java index baf6dadcb..60ad85021 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/status/JGitStatusCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/status/JGitStatusCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.status; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -33,6 +34,7 @@ import org.apache.maven.scm.provider.git.jgit.command.JGitUtils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Status; +import org.eclipse.jgit.api.errors.GitAPIException; /** * @author Mark Struberg @@ -51,7 +53,7 @@ protected StatusScmResult executeStatusCommand(ScmProviderRepository repo, ScmFi List changedFiles = getFileStati(status); return new StatusScmResult("JGit status", changedFiles); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit status failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java index 94867a6d3..03eaf56af 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.tag; +import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; @@ -42,6 +43,7 @@ import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.TransportConfigCallback; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.revwalk.RevCommit; @@ -138,7 +140,7 @@ public ScmResult executeTagCommand( } catch (PushException e) { logger.debug("Failed to push tag", e); return new TagScmResult("JGit tag", "Failed to push tag: " + e.getMessage(), "", false); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit tag failure!", e); } finally { JGitUtils.closeRepo(git); diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/untag/JGitUntagCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/untag/JGitUntagCommand.java index 2a0e22d75..fb92821e1 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/untag/JGitUntagCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/untag/JGitUntagCommand.java @@ -18,6 +18,7 @@ */ package org.apache.maven.scm.provider.git.jgit.command.untag; +import java.io.IOException; import java.util.Collection; import java.util.EnumSet; import java.util.Optional; @@ -39,6 +40,7 @@ import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.TransportConfigCallback; +import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.transport.PushResult; import org.eclipse.jgit.transport.RefSpec; @@ -112,7 +114,7 @@ protected ScmResult executeUntagCommand( } catch (PushException e) { logger.debug("Failed to push tag deletion", e); return new UntagScmResult("JGit tagDelete", "Failed to push tag deletion: " + e.getMessage(), "", false); - } catch (Exception e) { + } catch (IOException | GitAPIException e) { throw new ScmException("JGit tagDelete failure!", e); } finally { JGitUtils.closeRepo(git); From 6f6045633629fccdea4b2c8c9163e016446ad50e Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 6 Aug 2025 18:25:46 +0100 Subject: [PATCH 2/3] revert --- .../maven/scm/plugin/AbstractScmMojo.java | 11 ++++---- .../command/checkout/JGitCheckOutCommand.java | 27 +++++++++---------- 2 files changed, 18 insertions(+), 20 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 ecfbab192..7dec2c939 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 @@ -285,10 +285,8 @@ public ScmFileSet getFileSet() throws IOException { } public ScmRepository getScmRepository() throws ScmException { - ScmRepository repository; - try { - repository = getScmManager().makeScmRepository(getConnectionUrl()); + ScmRepository repository = getScmManager().makeScmRepository(getConnectionUrl()); ScmProviderRepository providerRepo = repository.getProviderRepository(); @@ -334,17 +332,18 @@ public ScmRepository getScmRepository() throws ScmException { svnRepo.setTagBase(tagBase); } + + return repository; } catch (ScmRepositoryException e) { if (!e.getValidationMessages().isEmpty()) { for (String message : e.getValidationMessages()) { getLog().error(message); } } - + throw new ScmException("Can't load the scm provider.", e); + } catch (RuntimeException e) { throw new ScmException("Can't load the scm provider.", e); } - - return repository; } /** diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java index 49df2cdd3..f41ffe9e9 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java @@ -196,21 +196,20 @@ && new File(fileSet.getBasedir(), ".git").exists() RevCommit commit = revWalk.parseCommit(git.getRepository().resolve(Constants.HEAD)); revWalk.close(); - final TreeWalk walk = new TreeWalk(git.getRepository()); - walk.reset(); // drop the first empty tree, which we do not need here - walk.setRecursive(true); - walk.addTree(commit.getTree()); - - List listedFiles = new ArrayList<>(); - while (walk.next()) { - listedFiles.add(new ScmFile(walk.getPathString(), ScmFileStatus.CHECKED_OUT)); - } - walk.close(); - - logger.debug("current branch: " + git.getRepository().getBranch()); + try (TreeWalk walk = new TreeWalk(git.getRepository())) { + walk.reset(); // drop the first empty tree, which we do not need here + walk.setRecursive(true); + walk.addTree(commit.getTree()); + + List listedFiles = new ArrayList<>(); + while (walk.next()) { + listedFiles.add(new ScmFile(walk.getPathString(), ScmFileStatus.CHECKED_OUT)); + } + logger.debug("current branch: " + git.getRepository().getBranch()); - return new CheckOutScmResult("checkout via JGit", listedFiles); - } catch (IOException | GitAPIException e) { + return new CheckOutScmResult("checkout via JGit", listedFiles); + } + } catch (RuntimeException | IOException | GitAPIException e) { throw new ScmException("JGit checkout failure!", e); } finally { JGitUtils.closeRepo(git); From 2ee868a61a31f92a6b7fac061fc51a8e1948ac24 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 6 Aug 2025 21:55:32 +0100 Subject: [PATCH 3/3] remove null check --- .../org/apache/maven/scm/provider/git/GitConfigFileReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/GitConfigFileReader.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/GitConfigFileReader.java index 90687eada..d56cc75d8 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/GitConfigFileReader.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/GitConfigFileReader.java @@ -108,7 +108,7 @@ private List getConfLines() { new BufferedReader(new FileReader(new File(getConfigDirectory(), "config")))) { String line; while ((line = reader.readLine()) != null) { - if (!line.startsWith("#") && (line != null && !line.isEmpty())) { + if (!line.startsWith("#") && !line.isEmpty()) { lines.add(line); } }