@@ -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