[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