From d37ccb3911bf73810b8538dfc4be489a7181848c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Wed, 12 Feb 2025 15:34:35 +0100 Subject: [PATCH] Fix NPE if any of the transitive resolved artifacts fail (cherry picked from commit 5e1f7a5beac1e42e32a6a1b6a37b2836fbe32689) --- .../p2/repository/MavenP2SiteMojo.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tycho-p2-repository-plugin/src/main/java/org/eclipse/tycho/plugins/p2/repository/MavenP2SiteMojo.java b/tycho-p2-repository-plugin/src/main/java/org/eclipse/tycho/plugins/p2/repository/MavenP2SiteMojo.java index efe6893f3d..58b29e077d 100644 --- a/tycho-p2-repository-plugin/src/main/java/org/eclipse/tycho/plugins/p2/repository/MavenP2SiteMojo.java +++ b/tycho-p2-repository-plugin/src/main/java/org/eclipse/tycho/plugins/p2/repository/MavenP2SiteMojo.java @@ -160,6 +160,9 @@ public class MavenP2SiteMojo extends AbstractMojo { @Parameter(defaultValue = "false") private boolean includeTransitiveDependencies; + @Parameter(defaultValue = "false") + private boolean failOnResolveError; + @Parameter(defaultValue = "300") private int timeoutInSeconds = 300; @@ -464,6 +467,9 @@ protected void resolve(List dependencies, List bundles, List resolveArtifact(Artifact artifact, boolean resolveTransitively) { + protected Set resolveArtifact(Artifact artifact, boolean resolveTransitively) + throws MojoExecutionException { ArtifactResolutionRequest request = new ArtifactResolutionRequest(); request.setArtifact(artifact); request.setOffline(session.isOffline()); @@ -524,6 +531,17 @@ protected Set resolveArtifact(Artifact artifact, boolean resolveTransi request.setResolveTransitively(resolveTransitively); request.setRemoteRepositories(session.getCurrentProject().getRemoteArtifactRepositories()); ArtifactResolutionResult result = repositorySystem.resolve(request); + if (failOnResolveError) { + for (Exception exception : result.getExceptions()) { + throw new MojoExecutionException(exception); + } + for (Exception exception : result.getErrorArtifactExceptions()) { + throw new MojoExecutionException(exception); + } + for (Exception exception : result.getMetadataResolutionExceptions()) { + throw new MojoExecutionException(exception); + } + } return result.getArtifacts(); }