[java-mvn-enforcer] branch main updated: JMVN-90 Troubleshoot Maven artifact resolution errors

Codeberg noreply at shibboleth.net
Mon Oct 12 12:27:11 UTC 2026


This is an automated email from the git hooks/post-receive script.

codeberg pushed a commit to branch main
in repository java-mvn-enforcer.

View the commit online:
https://codeberg.org/Shibboleth/java-mvn-enforcer/commit/6ff4e521752ebe5dd44663c3ffa46582a2a594b9

The following commit(s) were added to refs/heads/main by this push:
     new 6ff4e52  JMVN-90 Troubleshoot Maven artifact resolution errors
6ff4e52 is described below

commit 6ff4e521752ebe5dd44663c3ffa46582a2a594b9
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Oct 12 13:25:58 2026 +0100

    JMVN-90 Troubleshoot Maven artifact resolution errors
    
    https://shibboleth.atlassian.net/browse/JMVN-90
    
    Second attempt and auto-retry on resolution failures.
---
 .../shibboleth/mvn/enforcer/impl/JarEnforcer.java  | 27 +++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
index 6847d02..6d3361f 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
@@ -23,6 +23,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.nio.file.Files;
@@ -43,12 +44,16 @@ import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
+import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.resolution.ArtifactRequest;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.ResolutionErrorPolicy;
+import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy;
 import org.slf4j.Logger;
 
 import net.shibboleth.mvn.enforcer.impl.GPGKeyRing.Signature;
@@ -133,7 +138,10 @@ public class JarEnforcer extends AbstractEnforcerRule implements MavenLoader{
 
     /** The thing used to do resolution. */
     @Nonnull private final RepositorySystem repositorySystem;
-    
+
+    /** The parameters to resolution. Specifically, do not cache. */
+    private RepositorySystemSession repositorySystemSession;
+
     /** Our logger.  Setup at the start of {@link #execute()}. */
     private Logger log;
 
@@ -190,6 +198,17 @@ public class JarEnforcer extends AbstractEnforcerRule implements MavenLoader{
         return Path.of(depCheckReportPath);
     }
 
+    /** Get our dedicated {@link RepositorySystemSession}.
+     * @return a {@link RepositorySystemSession}
+     */
+    private synchronized RepositorySystemSession ensureRepositorySystemSession() {
+        if (repositorySystemSession == null) {
+            repositorySystemSession = new DefaultRepositorySystemSession(session.getRepositorySession()).
+                 setResolutionErrorPolicy(new SimpleResolutionErrorPolicy(ResolutionErrorPolicy.CACHE_DISABLED));
+        }
+        return repositorySystemSession;
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -502,12 +521,14 @@ public class JarEnforcer extends AbstractEnforcerRule implements MavenLoader{
         log.debug("Resolving {}", artifact);
         while(true) {
 	        try {
-	            final ArtifactResult res = repositorySystem.resolveArtifact(session.getRepositorySession(),  req);
+	            final ArtifactResult res = repositorySystem.resolveArtifact(ensureRepositorySystemSession(),  req);
 	            final File file = res.getArtifact().getFile();
 	            log.debug("Resolved to {}", file.getAbsolutePath());
 	            return file;
 	        } catch (final ArtifactResolutionException e) {
-	            log.error("Resolution of {} failed {} {} \n {}", artifact, e.getMessage(), e.getCause(), e.getStackTrace());
+				final PrintWriter pw = new PrintWriter(new StringWriter());
+				e.printStackTrace(pw);
+				log.error("Resolution of {} failed {} {} \n {}", artifact, e.getMessage(), e.getCause(), pw);
 	            if (retryCount++ > 1) {
                     break;
 	            }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list