Collection<ParameterData> (MavenDomPluginModel pluginModel, MavenDomConfiguration config) { List<String> selectedGoals = null; MavenDomPluginExecution executionElement = config.getParentOfType(MavenDomPluginExecution.class, false); if (executionElement != null) { selectedGoals = new ArrayList<>(); String id = executionElement.getId().getStringValue(); String defaultPrefix = "default-"; if (id != null && id.startsWith(defaultPrefix)) { String goal = id.substring(defaultPrefix.length()); if (!StringUtil.isEmptyOrSpaces(goal)) selectedGoals.add(goal); } for (GenericDomValue<String> goal : executionElement.getGoals().getGoals()) { selectedGoals.add(goal.getStringValue()); } } Map<String, ParameterData> namesWithParameters = new HashMap<>(); for (MavenDomMojo eachMojo : pluginModel.getMojos().getMojos()) { String goal = eachMojo.getGoal().getStringValue(); if (goal == null) continue; if (selectedGoals == null || selectedGoals.contains(goal)) { for (MavenDomParameter eachParameter : eachMojo.getParameters().getParameters()) { String name = eachParameter.getName().getStringValue(); if (name == null) continue; ParameterData data = new ParameterData(eachParameter); fillParameterData(name, data, eachMojo); ParameterData oldParameter = namesWithParameters.get(name); if (oldParameter == null || hasMorePriority(data, oldParameter, executionElement != null)) { namesWithParameters.put(name, data); } } } } return namesWithParameters.values(); }