Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 39 additions & 5 deletions src/main/java/com/redhat/exhort/providers/JavaMavenProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,41 @@ private List<DependencyAggregator> getDependencies(final Path manifestPath) thro
// when a "dependency" tag starts, it will be initiated,
// when a "dependency" tag ends, it will be parsed, act upon, and reset
DependencyAggregator dependencyAggregator = null;
boolean insideDependencyManagement = false;
boolean insideExclusions = false;
boolean insidePlugins = false;
while (reader.hasNext()) {
reader.next(); // get the next event
if (reader.isStartElement() && "dependencyManagement".equals(reader.getLocalName())) {
insideDependencyManagement = true;
continue;
}
if (reader.isEndElement() && "dependencyManagement".equals(reader.getLocalName())) {
insideDependencyManagement = false;
continue;
}
if (reader.isStartElement() && "plugins".equals(reader.getLocalName())) {
insidePlugins = true;
continue;
}
if (reader.isEndElement() && "plugins".equals(reader.getLocalName())) {
insidePlugins = false;
continue;
}
if (reader.isStartElement() && "exclusions".equals(reader.getLocalName())) {
insideExclusions = true;
continue;
}
if (reader.isEndElement() && "exclusions".equals(reader.getLocalName())) {
insideExclusions = false;
continue;
}
if (reader.isStartElement() && "dependency".equals(reader.getLocalName())) {
// starting "dependency" tag, initiate aggregator
dependencyAggregator = new DependencyAggregator();
// starting "dependency" tag, initiate aggregator only if not inside dependencyManagement
// or plugins
if (!insideDependencyManagement && !insidePlugins) {
dependencyAggregator = new DependencyAggregator();
}
continue;
}

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

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

if (reader.isEndElement() && "dependency".equals(reader.getLocalName())) {
// add object to list and reset dependency aggregator
deps.add(dependencyAggregator);
// add object to list and reset dependency aggregator only if not inside
// dependencyManagement or plugins
if (!insideDependencyManagement && !insidePlugins && dependencyAggregator != null) {
deps.add(dependencyAggregator);
}
dependencyAggregator = null;
}
}
Expand Down
Loading
Loading