diff --git a/tycho-baseline-plugin/src/main/java/org/eclipse/tycho/baseline/DependencyCheckMojo.java b/tycho-baseline-plugin/src/main/java/org/eclipse/tycho/baseline/DependencyCheckMojo.java index 5209769441..2f3f226b4e 100644 --- a/tycho-baseline-plugin/src/main/java/org/eclipse/tycho/baseline/DependencyCheckMojo.java +++ b/tycho-baseline-plugin/src/main/java/org/eclipse/tycho/baseline/DependencyCheckMojo.java @@ -244,12 +244,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { } } } - dependencyProblems.add(new DependencyVersionProblem(String.format( + dependencyProblems.add(new DependencyVersionProblem(packageName + "_" + version, String + .format( "Import-Package `%s %s` (compiled against `%s` provided by `%s %s`) includes `%s` (provided by `%s`) but this version is missing the method `%s#%s`", packageName, packageVersion, matchedPackageVersion.orElse(org.eclipse.equinox.p2.metadata.Version.emptyVersion) .toString(), - unit.getId(), unit.getVersion(), v.getVersion(), v.getProvider(), mthd.className(), + unit.getId(), unit.getVersion(), version, v.getProvider(), mthd.className(), getMethodRef(mthd)), references.get(mthd), provided)); ok = false; packageWithError.add(packageName); @@ -276,7 +277,12 @@ public void execute() throws MojoExecutionException, MojoFailureException { applyLowerBounds(packageWithError, lowestPackageVersion); } MarkdownBuilder results = new MarkdownBuilder(reportFileName); + Set<String> keys = new HashSet<>(); for (DependencyVersionProblem problem : dependencyProblems) { + if (!verbose && !keys.add(problem.key())) { + // we have already reported one problem in this category + continue; + } Collection<String> references = problem.references(); String message; if (references == null || references.isEmpty()) { @@ -399,7 +405,7 @@ private JrtClasses getJRTClassResolver() { return new JrtClasses(null); } - private static record DependencyVersionProblem(String message, Collection<String> references, + private static record DependencyVersionProblem(String key, String message, Collection<String> references, List<MethodSignature> provided) { }