Skip to content

Commit 7b83858

Browse files
authored
fix: TC-2773 Do not collect indirect dependencies inside dependencyManagement and plugins (#177)
## Description fix: TC-2773 Do not collect indirect dependencies inside dependencyManagement and plugins **Related issue (if any):** fixes https://issues.redhat.com/browse/TC-2773 ## Checklist - [x] I have followed this repository's contributing guidelines. - [x] I will adhere to the project's code of conduct. ## Additional information > Anything else?
1 parent f8fc697 commit 7b83858

File tree

2 files changed

+97
-13037
lines changed

2 files changed

+97
-13037
lines changed

src/main/java/com/redhat/exhort/providers/JavaMavenProvider.java

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,41 @@ private List<DependencyAggregator> getDependencies(final Path manifestPath) thro
238238
// when a "dependency" tag starts, it will be initiated,
239239
// when a "dependency" tag ends, it will be parsed, act upon, and reset
240240
DependencyAggregator dependencyAggregator = null;
241+
boolean insideDependencyManagement = false;
242+
boolean insideExclusions = false;
243+
boolean insidePlugins = false;
241244
while (reader.hasNext()) {
242245
reader.next(); // get the next event
246+
if (reader.isStartElement() && "dependencyManagement".equals(reader.getLocalName())) {
247+
insideDependencyManagement = true;
248+
continue;
249+
}
250+
if (reader.isEndElement() && "dependencyManagement".equals(reader.getLocalName())) {
251+
insideDependencyManagement = false;
252+
continue;
253+
}
254+
if (reader.isStartElement() && "plugins".equals(reader.getLocalName())) {
255+
insidePlugins = true;
256+
continue;
257+
}
258+
if (reader.isEndElement() && "plugins".equals(reader.getLocalName())) {
259+
insidePlugins = false;
260+
continue;
261+
}
262+
if (reader.isStartElement() && "exclusions".equals(reader.getLocalName())) {
263+
insideExclusions = true;
264+
continue;
265+
}
266+
if (reader.isEndElement() && "exclusions".equals(reader.getLocalName())) {
267+
insideExclusions = false;
268+
continue;
269+
}
243270
if (reader.isStartElement() && "dependency".equals(reader.getLocalName())) {
244-
// starting "dependency" tag, initiate aggregator
245-
dependencyAggregator = new DependencyAggregator();
271+
// starting "dependency" tag, initiate aggregator only if not inside dependencyManagement
272+
// or plugins
273+
if (!insideDependencyManagement && !insidePlugins) {
274+
dependencyAggregator = new DependencyAggregator();
275+
}
246276
continue;
247277
}
248278

@@ -256,9 +286,10 @@ private List<DependencyAggregator> getDependencies(final Path manifestPath) thro
256286
continue;
257287
}
258288

259-
if (reader.isStartElement()) {
289+
if (reader.isStartElement() && !insideExclusions) {
260290
// NOTE if we want to include "scope" tags in ignore,
261291
// add a case here and a property in DependencyIgnore
292+
// Only process these elements if we're not inside exclusions
262293
switch (reader.getLocalName()) {
263294
case "groupId": // starting "groupId" tag, get next event and set to aggregator
264295
reader.next();
@@ -282,8 +313,11 @@ private List<DependencyAggregator> getDependencies(final Path manifestPath) thro
282313
}
283314

284315
if (reader.isEndElement() && "dependency".equals(reader.getLocalName())) {
285-
// add object to list and reset dependency aggregator
286-
deps.add(dependencyAggregator);
316+
// add object to list and reset dependency aggregator only if not inside
317+
// dependencyManagement or plugins
318+
if (!insideDependencyManagement && !insidePlugins && dependencyAggregator != null) {
319+
deps.add(dependencyAggregator);
320+
}
287321
dependencyAggregator = null;
288322
}
289323
}

0 commit comments

Comments
 (0)