Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireUpperBoundDeps.html
 Sat Apr  1 21:10:25 2023
@@ -35,299 +35,309 @@
 <span class="source-line-no">022</span><span id="line-22">import 
javax.inject.Named;</span>
 <span class="source-line-no">023</span><span id="line-23"></span>
 <span class="source-line-no">024</span><span id="line-24">import 
java.util.ArrayList;</span>
-<span class="source-line-no">025</span><span id="line-25">import 
java.util.Collections;</span>
-<span class="source-line-no">026</span><span id="line-26">import 
java.util.HashMap;</span>
-<span class="source-line-no">027</span><span id="line-27">import 
java.util.List;</span>
-<span class="source-line-no">028</span><span id="line-28">import 
java.util.Map;</span>
-<span class="source-line-no">029</span><span id="line-29">import 
java.util.Objects;</span>
-<span class="source-line-no">030</span><span id="line-30"></span>
-<span class="source-line-no">031</span><span id="line-31">import 
org.apache.maven.artifact.Artifact;</span>
-<span class="source-line-no">032</span><span id="line-32">import 
org.apache.maven.artifact.versioning.ArtifactVersion;</span>
-<span class="source-line-no">033</span><span id="line-33">import 
org.apache.maven.artifact.versioning.DefaultArtifactVersion;</span>
-<span class="source-line-no">034</span><span id="line-34">import 
org.apache.maven.artifact.versioning.OverConstrainedVersionException;</span>
-<span class="source-line-no">035</span><span id="line-35">import 
org.apache.maven.enforcer.rule.api.EnforcerRuleException;</span>
-<span class="source-line-no">036</span><span id="line-36">import 
org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;</span>
-<span class="source-line-no">037</span><span id="line-37">import 
org.apache.maven.enforcer.rules.utils.ArtifactUtils;</span>
-<span class="source-line-no">038</span><span id="line-38">import 
org.apache.maven.enforcer.rules.utils.ParentNodeProvider;</span>
-<span class="source-line-no">039</span><span id="line-39">import 
org.apache.maven.enforcer.rules.utils.ParentsVisitor;</span>
-<span class="source-line-no">040</span><span id="line-40">import 
org.eclipse.aether.graph.DependencyNode;</span>
-<span class="source-line-no">041</span><span id="line-41">import 
org.eclipse.aether.graph.DependencyVisitor;</span>
-<span class="source-line-no">042</span><span id="line-42">import 
org.eclipse.aether.util.graph.manager.DependencyManagerUtils;</span>
-<span class="source-line-no">043</span><span id="line-43"></span>
-<span class="source-line-no">044</span><span id="line-44">/**</span>
-<span class="source-line-no">045</span><span id="line-45"> * Rule to enforce 
that the resolved dependency is also the most recent one of all transitive 
dependencies.</span>
-<span class="source-line-no">046</span><span id="line-46"> *</span>
-<span class="source-line-no">047</span><span id="line-47"> * @author Geoffrey 
De Smet</span>
-<span class="source-line-no">048</span><span id="line-48"> * @since 1.1</span>
-<span class="source-line-no">049</span><span id="line-49"> */</span>
-<span class="source-line-no">050</span><span 
id="line-50">@Named("requireUpperBoundDeps")</span>
-<span class="source-line-no">051</span><span id="line-51">public final class 
RequireUpperBoundDeps extends AbstractStandardEnforcerRule {</span>
-<span class="source-line-no">052</span><span id="line-52"></span>
-<span class="source-line-no">053</span><span id="line-53">    /**</span>
-<span class="source-line-no">054</span><span id="line-54">     * @since 
1.3</span>
-<span class="source-line-no">055</span><span id="line-55">     */</span>
-<span class="source-line-no">056</span><span id="line-56">    private boolean 
uniqueVersions;</span>
-<span class="source-line-no">057</span><span id="line-57"></span>
-<span class="source-line-no">058</span><span id="line-58">    /**</span>
-<span class="source-line-no">059</span><span id="line-59">     * Dependencies 
to ignore.</span>
-<span class="source-line-no">060</span><span id="line-60">     *</span>
-<span class="source-line-no">061</span><span id="line-61">     * @since 
TBD</span>
-<span class="source-line-no">062</span><span id="line-62">     */</span>
-<span class="source-line-no">063</span><span id="line-63">    private 
List&lt;String&gt; excludes = null;</span>
-<span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">    /**</span>
-<span class="source-line-no">066</span><span id="line-66">     * Dependencies 
to include.</span>
-<span class="source-line-no">067</span><span id="line-67">     *</span>
-<span class="source-line-no">068</span><span id="line-68">     * @since 
3.0.0</span>
-<span class="source-line-no">069</span><span id="line-69">     */</span>
-<span class="source-line-no">070</span><span id="line-70">    private 
List&lt;String&gt; includes = null;</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">    private 
RequireUpperBoundDepsVisitor upperBoundDepsVisitor;</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">    private final 
ResolveUtil resolveUtil;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
java.util.Arrays;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
java.util.Collections;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
java.util.HashMap;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
java.util.List;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
java.util.Map;</span>
+<span class="source-line-no">030</span><span id="line-30">import 
java.util.Objects;</span>
+<span class="source-line-no">031</span><span id="line-31"></span>
+<span class="source-line-no">032</span><span id="line-32">import 
org.apache.maven.artifact.Artifact;</span>
+<span class="source-line-no">033</span><span id="line-33">import 
org.apache.maven.artifact.versioning.ArtifactVersion;</span>
+<span class="source-line-no">034</span><span id="line-34">import 
org.apache.maven.artifact.versioning.DefaultArtifactVersion;</span>
+<span class="source-line-no">035</span><span id="line-35">import 
org.apache.maven.artifact.versioning.OverConstrainedVersionException;</span>
+<span class="source-line-no">036</span><span id="line-36">import 
org.apache.maven.enforcer.rule.api.EnforcerRuleException;</span>
+<span class="source-line-no">037</span><span id="line-37">import 
org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;</span>
+<span class="source-line-no">038</span><span id="line-38">import 
org.apache.maven.enforcer.rules.utils.ArtifactUtils;</span>
+<span class="source-line-no">039</span><span id="line-39">import 
org.apache.maven.enforcer.rules.utils.ParentNodeProvider;</span>
+<span class="source-line-no">040</span><span id="line-40">import 
org.apache.maven.enforcer.rules.utils.ParentsVisitor;</span>
+<span class="source-line-no">041</span><span id="line-41">import 
org.eclipse.aether.graph.DependencyNode;</span>
+<span class="source-line-no">042</span><span id="line-42">import 
org.eclipse.aether.graph.DependencyVisitor;</span>
+<span class="source-line-no">043</span><span id="line-43">import 
org.eclipse.aether.util.graph.manager.DependencyManagerUtils;</span>
+<span class="source-line-no">044</span><span id="line-44"></span>
+<span class="source-line-no">045</span><span id="line-45">import static 
org.apache.maven.artifact.Artifact.SCOPE_PROVIDED;</span>
+<span class="source-line-no">046</span><span id="line-46">import static 
org.apache.maven.artifact.Artifact.SCOPE_TEST;</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">/**</span>
+<span class="source-line-no">049</span><span id="line-49"> * Rule to enforce 
that the resolved dependency is also the most recent one of all transitive 
dependencies.</span>
+<span class="source-line-no">050</span><span id="line-50"> *</span>
+<span class="source-line-no">051</span><span id="line-51"> * @author Geoffrey 
De Smet</span>
+<span class="source-line-no">052</span><span id="line-52"> * @since 1.1</span>
+<span class="source-line-no">053</span><span id="line-53"> */</span>
+<span class="source-line-no">054</span><span 
id="line-54">@Named("requireUpperBoundDeps")</span>
+<span class="source-line-no">055</span><span id="line-55">public final class 
RequireUpperBoundDeps extends AbstractStandardEnforcerRule {</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">    /**</span>
+<span class="source-line-no">058</span><span id="line-58">     * @since 
1.3</span>
+<span class="source-line-no">059</span><span id="line-59">     */</span>
+<span class="source-line-no">060</span><span id="line-60">    private boolean 
uniqueVersions;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">    /**</span>
+<span class="source-line-no">063</span><span id="line-63">     * Dependencies 
to ignore.</span>
+<span class="source-line-no">064</span><span id="line-64">     *</span>
+<span class="source-line-no">065</span><span id="line-65">     * @since 
TBD</span>
+<span class="source-line-no">066</span><span id="line-66">     */</span>
+<span class="source-line-no">067</span><span id="line-67">    private 
List&lt;String&gt; excludes = null;</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69">    /**</span>
+<span class="source-line-no">070</span><span id="line-70">     * Dependencies 
to include.</span>
+<span class="source-line-no">071</span><span id="line-71">     *</span>
+<span class="source-line-no">072</span><span id="line-72">     * @since 
3.0.0</span>
+<span class="source-line-no">073</span><span id="line-73">     */</span>
+<span class="source-line-no">074</span><span id="line-74">    private 
List&lt;String&gt; includes = null;</span>
 <span class="source-line-no">075</span><span id="line-75"></span>
-<span class="source-line-no">076</span><span id="line-76">    @Inject</span>
-<span class="source-line-no">077</span><span id="line-77">    public 
RequireUpperBoundDeps(ResolveUtil resolveUtil) {</span>
-<span class="source-line-no">078</span><span id="line-78">        
this.resolveUtil = Objects.requireNonNull(resolveUtil);</span>
-<span class="source-line-no">079</span><span id="line-79">    }</span>
+<span class="source-line-no">076</span><span id="line-76">    /**</span>
+<span class="source-line-no">077</span><span id="line-77">     * Scope to 
exclude.</span>
+<span class="source-line-no">078</span><span id="line-78">     */</span>
+<span class="source-line-no">079</span><span id="line-79">    private 
List&lt;String&gt; excludedScopes = Arrays.asList(SCOPE_TEST, 
SCOPE_PROVIDED);</span>
 <span class="source-line-no">080</span><span id="line-80"></span>
-<span class="source-line-no">081</span><span id="line-81">    /**</span>
-<span class="source-line-no">082</span><span id="line-82">     * Sets 
dependencies to exclude.</span>
-<span class="source-line-no">083</span><span id="line-83">     * @param 
excludes a list of {@code groupId:artifactId} names</span>
-<span class="source-line-no">084</span><span id="line-84">     */</span>
-<span class="source-line-no">085</span><span id="line-85">    public void 
setExcludes(List&lt;String&gt; excludes) {</span>
-<span class="source-line-no">086</span><span id="line-86">        
this.excludes = excludes;</span>
-<span class="source-line-no">087</span><span id="line-87">    }</span>
-<span class="source-line-no">088</span><span id="line-88"></span>
-<span class="source-line-no">089</span><span id="line-89">    /**</span>
-<span class="source-line-no">090</span><span id="line-90">     * Sets 
dependencies to include.</span>
-<span class="source-line-no">091</span><span id="line-91">     *</span>
-<span class="source-line-no">092</span><span id="line-92">     * @param 
includes a list of {@code groupId:artifactId} names</span>
+<span class="source-line-no">081</span><span id="line-81">    private 
RequireUpperBoundDepsVisitor upperBoundDepsVisitor;</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">    private final 
ResolverUtil resolverUtil;</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85">    @Inject</span>
+<span class="source-line-no">086</span><span id="line-86">    public 
RequireUpperBoundDeps(ResolverUtil resolverUtil) {</span>
+<span class="source-line-no">087</span><span id="line-87">        
this.resolverUtil = Objects.requireNonNull(resolverUtil);</span>
+<span class="source-line-no">088</span><span id="line-88">    }</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90">    /**</span>
+<span class="source-line-no">091</span><span id="line-91">     * Sets 
dependencies to exclude.</span>
+<span class="source-line-no">092</span><span id="line-92">     * @param 
excludes a list of {@code groupId:artifactId} names</span>
 <span class="source-line-no">093</span><span id="line-93">     */</span>
-<span class="source-line-no">094</span><span id="line-94">    public void 
setIncludes(List&lt;String&gt; includes) {</span>
-<span class="source-line-no">095</span><span id="line-95">        
this.includes = includes;</span>
+<span class="source-line-no">094</span><span id="line-94">    public void 
setExcludes(List&lt;String&gt; excludes) {</span>
+<span class="source-line-no">095</span><span id="line-95">        
this.excludes = excludes;</span>
 <span class="source-line-no">096</span><span id="line-96">    }</span>
 <span class="source-line-no">097</span><span id="line-97"></span>
-<span class="source-line-no">098</span><span id="line-98">    @Override</span>
-<span class="source-line-no">099</span><span id="line-99">    public void 
execute() throws EnforcerRuleException {</span>
-<span class="source-line-no">100</span><span id="line-100">        
DependencyNode node = resolveUtil.resolveTransitiveDependencies();</span>
-<span class="source-line-no">101</span><span id="line-101">        
upperBoundDepsVisitor = new RequireUpperBoundDepsVisitor()</span>
-<span class="source-line-no">102</span><span id="line-102">                
.setUniqueVersions(uniqueVersions)</span>
-<span class="source-line-no">103</span><span id="line-103">                
.setIncludes(includes);</span>
-<span class="source-line-no">104</span><span id="line-104">        
node.accept(upperBoundDepsVisitor);</span>
-<span class="source-line-no">105</span><span id="line-105">        
List&lt;String&gt; errorMessages = 
buildErrorMessages(upperBoundDepsVisitor.getConflicts());</span>
-<span class="source-line-no">106</span><span id="line-106">        if 
(errorMessages.size() &gt; 0) {</span>
-<span class="source-line-no">107</span><span id="line-107">            throw 
new EnforcerRuleException(</span>
-<span class="source-line-no">108</span><span id="line-108">                    
"Failed while enforcing RequireUpperBoundDeps. The error(s) are " + 
errorMessages);</span>
-<span class="source-line-no">109</span><span id="line-109">        }</span>
-<span class="source-line-no">110</span><span id="line-110">    }</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">    private 
List&lt;String&gt; buildErrorMessages(List&lt;List&lt;DependencyNode&gt;&gt; 
conflicts) {</span>
-<span class="source-line-no">113</span><span id="line-113">        
List&lt;String&gt; errorMessages = new 
ArrayList&lt;&gt;(conflicts.size());</span>
-<span class="source-line-no">114</span><span id="line-114">        for 
(List&lt;DependencyNode&gt; conflict : conflicts) {</span>
-<span class="source-line-no">115</span><span id="line-115">            
org.eclipse.aether.artifact.Artifact artifact = 
conflict.get(0).getArtifact();</span>
-<span class="source-line-no">116</span><span id="line-116">            String 
groupArt = artifact.getGroupId() + ":" + artifact.getArtifactId();</span>
-<span class="source-line-no">117</span><span id="line-117">            if 
(excludes != null &amp;&amp; excludes.contains(groupArt)) {</span>
-<span class="source-line-no">118</span><span id="line-118">                
getLog().info("Ignoring requireUpperBoundDeps in " + groupArt);</span>
-<span class="source-line-no">119</span><span id="line-119">            } else 
{</span>
-<span class="source-line-no">120</span><span id="line-120">                
errorMessages.add(buildErrorMessage(conflict));</span>
-<span class="source-line-no">121</span><span id="line-121">            }</span>
-<span class="source-line-no">122</span><span id="line-122">        }</span>
-<span class="source-line-no">123</span><span id="line-123">        return 
errorMessages;</span>
-<span class="source-line-no">124</span><span id="line-124">    }</span>
-<span class="source-line-no">125</span><span id="line-125"></span>
-<span class="source-line-no">126</span><span id="line-126">    private String 
buildErrorMessage(List&lt;DependencyNode&gt; conflict) {</span>
-<span class="source-line-no">127</span><span id="line-127">        
StringBuilder errorMessage = new StringBuilder();</span>
-<span class="source-line-no">128</span><span id="line-128">        
errorMessage</span>
-<span class="source-line-no">129</span><span id="line-129">                
.append(System.lineSeparator())</span>
-<span class="source-line-no">130</span><span id="line-130">                
.append("Require upper bound dependencies error for ")</span>
-<span class="source-line-no">131</span><span id="line-131">                
.append(getFullArtifactName(conflict.get(0), false))</span>
-<span class="source-line-no">132</span><span id="line-132">                
.append(" paths to dependency are:")</span>
-<span class="source-line-no">133</span><span id="line-133">                
.append(System.lineSeparator());</span>
-<span class="source-line-no">134</span><span id="line-134">        if 
(conflict.size() &gt; 0) {</span>
-<span class="source-line-no">135</span><span id="line-135">            
errorMessage.append(buildTreeString(conflict.get(0)));</span>
-<span class="source-line-no">136</span><span id="line-136">        }</span>
-<span class="source-line-no">137</span><span id="line-137">        for 
(DependencyNode node : conflict.subList(1, conflict.size())) {</span>
-<span class="source-line-no">138</span><span id="line-138">            
errorMessage.append("and").append(System.lineSeparator());</span>
-<span class="source-line-no">139</span><span id="line-139">            
errorMessage.append(buildTreeString(node));</span>
-<span class="source-line-no">140</span><span id="line-140">        }</span>
-<span class="source-line-no">141</span><span id="line-141">        return 
errorMessage.toString();</span>
-<span class="source-line-no">142</span><span id="line-142">    }</span>
-<span class="source-line-no">143</span><span id="line-143"></span>
-<span class="source-line-no">144</span><span id="line-144">    private 
StringBuilder buildTreeString(DependencyNode node) {</span>
-<span class="source-line-no">145</span><span id="line-145">        
List&lt;String&gt; loc = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">146</span><span id="line-146">        
DependencyNode currentNode = node;</span>
-<span class="source-line-no">147</span><span id="line-147">        while 
(currentNode != null) {</span>
-<span class="source-line-no">148</span><span id="line-148">            
StringBuilder line = new StringBuilder(getFullArtifactName(currentNode, 
false));</span>
-<span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">            if 
(DependencyManagerUtils.getPremanagedVersion(currentNode) != null) {</span>
-<span class="source-line-no">151</span><span id="line-151">                
line.append(" (managed) &lt;-- ");</span>
-<span class="source-line-no">152</span><span id="line-152">                
line.append(getFullArtifactName(currentNode, true));</span>
-<span class="source-line-no">153</span><span id="line-153">            }</span>
-<span class="source-line-no">154</span><span id="line-154"></span>
-<span class="source-line-no">155</span><span id="line-155">            
loc.add(line.toString());</span>
-<span class="source-line-no">156</span><span id="line-156">            
currentNode = upperBoundDepsVisitor.getParent(currentNode);</span>
-<span class="source-line-no">157</span><span id="line-157">        }</span>
-<span class="source-line-no">158</span><span id="line-158">        
Collections.reverse(loc);</span>
-<span class="source-line-no">159</span><span id="line-159">        
StringBuilder builder = new StringBuilder();</span>
-<span class="source-line-no">160</span><span id="line-160">        for (int i 
= 0; i &lt; loc.size(); i++) {</span>
-<span class="source-line-no">161</span><span id="line-161">            for 
(int j = 0; j &lt; i; j++) {</span>
-<span class="source-line-no">162</span><span id="line-162">                
builder.append("  ");</span>
+<span class="source-line-no">098</span><span id="line-98">    /**</span>
+<span class="source-line-no">099</span><span id="line-99">     * Sets 
dependencies to include.</span>
+<span class="source-line-no">100</span><span id="line-100">     *</span>
+<span class="source-line-no">101</span><span id="line-101">     * @param 
includes a list of {@code groupId:artifactId} names</span>
+<span class="source-line-no">102</span><span id="line-102">     */</span>
+<span class="source-line-no">103</span><span id="line-103">    public void 
setIncludes(List&lt;String&gt; includes) {</span>
+<span class="source-line-no">104</span><span id="line-104">        
this.includes = includes;</span>
+<span class="source-line-no">105</span><span id="line-105">    }</span>
+<span class="source-line-no">106</span><span id="line-106"></span>
+<span class="source-line-no">107</span><span id="line-107">    @Override</span>
+<span class="source-line-no">108</span><span id="line-108">    public void 
execute() throws EnforcerRuleException {</span>
+<span class="source-line-no">109</span><span id="line-109">        
DependencyNode node = 
resolverUtil.resolveTransitiveDependenciesVerbose(excludedScopes);</span>
+<span class="source-line-no">110</span><span id="line-110">        
upperBoundDepsVisitor = new RequireUpperBoundDepsVisitor()</span>
+<span class="source-line-no">111</span><span id="line-111">                
.setUniqueVersions(uniqueVersions)</span>
+<span class="source-line-no">112</span><span id="line-112">                
.setIncludes(includes);</span>
+<span class="source-line-no">113</span><span id="line-113">        
getLog().debug(() -&gt; resolverUtil.dumpTree(node));</span>
+<span class="source-line-no">114</span><span id="line-114">        
node.accept(upperBoundDepsVisitor);</span>
+<span class="source-line-no">115</span><span id="line-115">        
List&lt;String&gt; errorMessages = 
buildErrorMessages(upperBoundDepsVisitor.getConflicts());</span>
+<span class="source-line-no">116</span><span id="line-116">        if 
(!errorMessages.isEmpty()) {</span>
+<span class="source-line-no">117</span><span id="line-117">            throw 
new EnforcerRuleException(</span>
+<span class="source-line-no">118</span><span id="line-118">                    
"Failed while enforcing RequireUpperBoundDeps. The error(s) are " + 
errorMessages);</span>
+<span class="source-line-no">119</span><span id="line-119">        }</span>
+<span class="source-line-no">120</span><span id="line-120">    }</span>
+<span class="source-line-no">121</span><span id="line-121"></span>
+<span class="source-line-no">122</span><span id="line-122">    private 
List&lt;String&gt; buildErrorMessages(List&lt;List&lt;DependencyNode&gt;&gt; 
conflicts) {</span>
+<span class="source-line-no">123</span><span id="line-123">        
List&lt;String&gt; errorMessages = new 
ArrayList&lt;&gt;(conflicts.size());</span>
+<span class="source-line-no">124</span><span id="line-124">        for 
(List&lt;DependencyNode&gt; conflict : conflicts) {</span>
+<span class="source-line-no">125</span><span id="line-125">            
org.eclipse.aether.artifact.Artifact artifact = 
conflict.get(0).getArtifact();</span>
+<span class="source-line-no">126</span><span id="line-126">            String 
groupArt = artifact.getGroupId() + ":" + artifact.getArtifactId();</span>
+<span class="source-line-no">127</span><span id="line-127">            if 
(excludes != null &amp;&amp; excludes.contains(groupArt)) {</span>
+<span class="source-line-no">128</span><span id="line-128">                
getLog().info("Ignoring requireUpperBoundDeps in " + groupArt);</span>
+<span class="source-line-no">129</span><span id="line-129">            } else 
{</span>
+<span class="source-line-no">130</span><span id="line-130">                
errorMessages.add(buildErrorMessage(conflict));</span>
+<span class="source-line-no">131</span><span id="line-131">            }</span>
+<span class="source-line-no">132</span><span id="line-132">        }</span>
+<span class="source-line-no">133</span><span id="line-133">        return 
errorMessages;</span>
+<span class="source-line-no">134</span><span id="line-134">    }</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136">    private String 
buildErrorMessage(List&lt;DependencyNode&gt; conflict) {</span>
+<span class="source-line-no">137</span><span id="line-137">        
StringBuilder errorMessage = new StringBuilder();</span>
+<span class="source-line-no">138</span><span id="line-138">        
errorMessage</span>
+<span class="source-line-no">139</span><span id="line-139">                
.append(System.lineSeparator())</span>
+<span class="source-line-no">140</span><span id="line-140">                
.append("Require upper bound dependencies error for ")</span>
+<span class="source-line-no">141</span><span id="line-141">                
.append(getFullArtifactName(conflict.get(0), false))</span>
+<span class="source-line-no">142</span><span id="line-142">                
.append(" paths to dependency are:")</span>
+<span class="source-line-no">143</span><span id="line-143">                
.append(System.lineSeparator());</span>
+<span class="source-line-no">144</span><span id="line-144">        if 
(conflict.size() &gt; 0) {</span>
+<span class="source-line-no">145</span><span id="line-145">            
errorMessage.append(buildTreeString(conflict.get(0)));</span>
+<span class="source-line-no">146</span><span id="line-146">        }</span>
+<span class="source-line-no">147</span><span id="line-147">        for 
(DependencyNode node : conflict.subList(1, conflict.size())) {</span>
+<span class="source-line-no">148</span><span id="line-148">            
errorMessage.append("and").append(System.lineSeparator());</span>
+<span class="source-line-no">149</span><span id="line-149">            
errorMessage.append(buildTreeString(node));</span>
+<span class="source-line-no">150</span><span id="line-150">        }</span>
+<span class="source-line-no">151</span><span id="line-151">        return 
errorMessage.toString();</span>
+<span class="source-line-no">152</span><span id="line-152">    }</span>
+<span class="source-line-no">153</span><span id="line-153"></span>
+<span class="source-line-no">154</span><span id="line-154">    private 
StringBuilder buildTreeString(DependencyNode node) {</span>
+<span class="source-line-no">155</span><span id="line-155">        
List&lt;String&gt; loc = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">156</span><span id="line-156">        
DependencyNode currentNode = node;</span>
+<span class="source-line-no">157</span><span id="line-157">        while 
(currentNode != null) {</span>
+<span class="source-line-no">158</span><span id="line-158">            
StringBuilder line = new StringBuilder(getFullArtifactName(currentNode, 
false));</span>
+<span class="source-line-no">159</span><span id="line-159"></span>
+<span class="source-line-no">160</span><span id="line-160">            if 
(DependencyManagerUtils.getPremanagedVersion(currentNode) != null) {</span>
+<span class="source-line-no">161</span><span id="line-161">                
line.append(" (managed) &lt;-- ");</span>
+<span class="source-line-no">162</span><span id="line-162">                
line.append(getFullArtifactName(currentNode, true));</span>
 <span class="source-line-no">163</span><span id="line-163">            }</span>
-<span class="source-line-no">164</span><span id="line-164">            
builder.append("+-").append(loc.get(i));</span>
-<span class="source-line-no">165</span><span id="line-165">            
builder.append(System.lineSeparator());</span>
-<span class="source-line-no">166</span><span id="line-166">        }</span>
-<span class="source-line-no">167</span><span id="line-167">        return 
builder;</span>
-<span class="source-line-no">168</span><span id="line-168">    }</span>
-<span class="source-line-no">169</span><span id="line-169"></span>
-<span class="source-line-no">170</span><span id="line-170">    private String 
getFullArtifactName(DependencyNode node, boolean usePremanaged) {</span>
-<span class="source-line-no">171</span><span id="line-171">        Artifact 
artifact = ArtifactUtils.toArtifact(node);</span>
-<span class="source-line-no">172</span><span id="line-172"></span>
-<span class="source-line-no">173</span><span id="line-173">        String 
version = DependencyManagerUtils.getPremanagedVersion(node);</span>
-<span class="source-line-no">174</span><span id="line-174">        if 
(!usePremanaged || version == null) {</span>
-<span class="source-line-no">175</span><span id="line-175">            version 
= uniqueVersions ? artifact.getVersion() : artifact.getBaseVersion();</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165">            
loc.add(line.toString());</span>
+<span class="source-line-no">166</span><span id="line-166">            
currentNode = upperBoundDepsVisitor.getParent(currentNode);</span>
+<span class="source-line-no">167</span><span id="line-167">        }</span>
+<span class="source-line-no">168</span><span id="line-168">        
Collections.reverse(loc);</span>
+<span class="source-line-no">169</span><span id="line-169">        
StringBuilder builder = new StringBuilder();</span>
+<span class="source-line-no">170</span><span id="line-170">        for (int i 
= 0; i &lt; loc.size(); i++) {</span>
+<span class="source-line-no">171</span><span id="line-171">            for 
(int j = 0; j &lt; i; j++) {</span>
+<span class="source-line-no">172</span><span id="line-172">                
builder.append("  ");</span>
+<span class="source-line-no">173</span><span id="line-173">            }</span>
+<span class="source-line-no">174</span><span id="line-174">            
builder.append("+-").append(loc.get(i));</span>
+<span class="source-line-no">175</span><span id="line-175">            
builder.append(System.lineSeparator());</span>
 <span class="source-line-no">176</span><span id="line-176">        }</span>
-<span class="source-line-no">177</span><span id="line-177">        String 
result = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + 
version;</span>
-<span class="source-line-no">178</span><span id="line-178"></span>
-<span class="source-line-no">179</span><span id="line-179">        String 
classifier = artifact.getClassifier();</span>
-<span class="source-line-no">180</span><span id="line-180">        if 
(classifier != null &amp;&amp; !classifier.isEmpty()) {</span>
-<span class="source-line-no">181</span><span id="line-181">            result 
+= ":" + classifier;</span>
-<span class="source-line-no">182</span><span id="line-182">        }</span>
-<span class="source-line-no">183</span><span id="line-183"></span>
-<span class="source-line-no">184</span><span id="line-184">        String 
scope = artifact.getScope();</span>
-<span class="source-line-no">185</span><span id="line-185">        if (scope 
!= null &amp;&amp; !"compile".equals(scope)) {</span>
-<span class="source-line-no">186</span><span id="line-186">            result 
+= " [" + scope + ']';</span>
-<span class="source-line-no">187</span><span id="line-187">        }</span>
+<span class="source-line-no">177</span><span id="line-177">        return 
builder;</span>
+<span class="source-line-no">178</span><span id="line-178">    }</span>
+<span class="source-line-no">179</span><span id="line-179"></span>
+<span class="source-line-no">180</span><span id="line-180">    private String 
getFullArtifactName(DependencyNode node, boolean usePremanaged) {</span>
+<span class="source-line-no">181</span><span id="line-181">        Artifact 
artifact = ArtifactUtils.toArtifact(node);</span>
+<span class="source-line-no">182</span><span id="line-182"></span>
+<span class="source-line-no">183</span><span id="line-183">        String 
version = DependencyManagerUtils.getPremanagedVersion(node);</span>
+<span class="source-line-no">184</span><span id="line-184">        if 
(!usePremanaged || version == null) {</span>
+<span class="source-line-no">185</span><span id="line-185">            version 
= uniqueVersions ? artifact.getVersion() : artifact.getBaseVersion();</span>
+<span class="source-line-no">186</span><span id="line-186">        }</span>
+<span class="source-line-no">187</span><span id="line-187">        String 
result = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + 
version;</span>
 <span class="source-line-no">188</span><span id="line-188"></span>
-<span class="source-line-no">189</span><span id="line-189">        return 
result;</span>
-<span class="source-line-no">190</span><span id="line-190">    }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">    private static 
class RequireUpperBoundDepsVisitor implements DependencyVisitor, 
ParentNodeProvider {</span>
+<span class="source-line-no">189</span><span id="line-189">        String 
classifier = artifact.getClassifier();</span>
+<span class="source-line-no">190</span><span id="line-190">        if 
(classifier != null &amp;&amp; !classifier.isEmpty()) {</span>
+<span class="source-line-no">191</span><span id="line-191">            result 
+= ":" + classifier;</span>
+<span class="source-line-no">192</span><span id="line-192">        }</span>
 <span class="source-line-no">193</span><span id="line-193"></span>
-<span class="source-line-no">194</span><span id="line-194">        private 
final ParentsVisitor parentsVisitor = new ParentsVisitor();</span>
-<span class="source-line-no">195</span><span id="line-195">        private 
boolean uniqueVersions;</span>
-<span class="source-line-no">196</span><span id="line-196">        private 
List&lt;String&gt; includes = null;</span>
-<span class="source-line-no">197</span><span id="line-197"></span>
-<span class="source-line-no">198</span><span id="line-198">        public 
RequireUpperBoundDepsVisitor setUniqueVersions(boolean uniqueVersions) {</span>
-<span class="source-line-no">199</span><span id="line-199">            
this.uniqueVersions = uniqueVersions;</span>
-<span class="source-line-no">200</span><span id="line-200">            return 
this;</span>
-<span class="source-line-no">201</span><span id="line-201">        }</span>
-<span class="source-line-no">202</span><span id="line-202"></span>
-<span class="source-line-no">203</span><span id="line-203">        public 
RequireUpperBoundDepsVisitor setIncludes(List&lt;String&gt; includes) {</span>
-<span class="source-line-no">204</span><span id="line-204">            
this.includes = includes;</span>
-<span class="source-line-no">205</span><span id="line-205">            return 
this;</span>
-<span class="source-line-no">206</span><span id="line-206">        }</span>
+<span class="source-line-no">194</span><span id="line-194">        String 
scope = artifact.getScope();</span>
+<span class="source-line-no">195</span><span id="line-195">        if (scope 
!= null &amp;&amp; !"compile".equals(scope)) {</span>
+<span class="source-line-no">196</span><span id="line-196">            result 
+= " [" + scope + ']';</span>
+<span class="source-line-no">197</span><span id="line-197">        }</span>
+<span class="source-line-no">198</span><span id="line-198"></span>
+<span class="source-line-no">199</span><span id="line-199">        return 
result;</span>
+<span class="source-line-no">200</span><span id="line-200">    }</span>
+<span class="source-line-no">201</span><span id="line-201"></span>
+<span class="source-line-no">202</span><span id="line-202">    private static 
class RequireUpperBoundDepsVisitor implements DependencyVisitor, 
ParentNodeProvider {</span>
+<span class="source-line-no">203</span><span id="line-203"></span>
+<span class="source-line-no">204</span><span id="line-204">        private 
final ParentsVisitor parentsVisitor = new ParentsVisitor();</span>
+<span class="source-line-no">205</span><span id="line-205">        private 
boolean uniqueVersions;</span>
+<span class="source-line-no">206</span><span id="line-206">        private 
List&lt;String&gt; includes = null;</span>
 <span class="source-line-no">207</span><span id="line-207"></span>
-<span class="source-line-no">208</span><span id="line-208">        private 
final Map&lt;String, List&lt;DependencyNodeHopCountPair&gt;&gt; keyToPairsMap = 
new HashMap&lt;&gt;();</span>
-<span class="source-line-no">209</span><span id="line-209"></span>
-<span class="source-line-no">210</span><span id="line-210">        
@Override</span>
-<span class="source-line-no">211</span><span id="line-211">        public 
boolean visitEnter(DependencyNode node) {</span>
-<span class="source-line-no">212</span><span id="line-212">            
parentsVisitor.visitEnter(node);</span>
-<span class="source-line-no">213</span><span id="line-213">            
DependencyNodeHopCountPair pair = new DependencyNodeHopCountPair(node, 
this);</span>
-<span class="source-line-no">214</span><span id="line-214">            String 
key = pair.constructKey();</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216">            if 
(includes != null &amp;&amp; !includes.isEmpty() &amp;&amp; 
!includes.contains(key)) {</span>
-<span class="source-line-no">217</span><span id="line-217">                
return true;</span>
-<span class="source-line-no">218</span><span id="line-218">            }</span>
+<span class="source-line-no">208</span><span id="line-208">        public 
RequireUpperBoundDepsVisitor setUniqueVersions(boolean uniqueVersions) {</span>
+<span class="source-line-no">209</span><span id="line-209">            
this.uniqueVersions = uniqueVersions;</span>
+<span class="source-line-no">210</span><span id="line-210">            return 
this;</span>
+<span class="source-line-no">211</span><span id="line-211">        }</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">        public 
RequireUpperBoundDepsVisitor setIncludes(List&lt;String&gt; includes) {</span>
+<span class="source-line-no">214</span><span id="line-214">            
this.includes = includes;</span>
+<span class="source-line-no">215</span><span id="line-215">            return 
this;</span>
+<span class="source-line-no">216</span><span id="line-216">        }</span>
+<span class="source-line-no">217</span><span id="line-217"></span>
+<span class="source-line-no">218</span><span id="line-218">        private 
final Map&lt;String, List&lt;DependencyNodeHopCountPair&gt;&gt; keyToPairsMap = 
new HashMap&lt;&gt;();</span>
 <span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">            
keyToPairsMap.computeIfAbsent(key, k1 -&gt; new 
ArrayList&lt;&gt;()).add(pair);</span>
-<span class="source-line-no">221</span><span id="line-221">            
keyToPairsMap.get(key).sort(DependencyNodeHopCountPair::compareTo);</span>
-<span class="source-line-no">222</span><span id="line-222">            return 
true;</span>
-<span class="source-line-no">223</span><span id="line-223">        }</span>
-<span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">        
@Override</span>
-<span class="source-line-no">226</span><span id="line-226">        public 
boolean visitLeave(DependencyNode node) {</span>
-<span class="source-line-no">227</span><span id="line-227">            return 
parentsVisitor.visitLeave(node);</span>
-<span class="source-line-no">228</span><span id="line-228">        }</span>
+<span class="source-line-no">220</span><span id="line-220">        
@Override</span>
+<span class="source-line-no">221</span><span id="line-221">        public 
boolean visitEnter(DependencyNode node) {</span>
+<span class="source-line-no">222</span><span id="line-222">            
parentsVisitor.visitEnter(node);</span>
+<span class="source-line-no">223</span><span id="line-223">            
DependencyNodeHopCountPair pair = new DependencyNodeHopCountPair(node, 
this);</span>
+<span class="source-line-no">224</span><span id="line-224">            String 
key = pair.constructKey();</span>
+<span class="source-line-no">225</span><span id="line-225"></span>
+<span class="source-line-no">226</span><span id="line-226">            if 
(includes != null &amp;&amp; !includes.isEmpty() &amp;&amp; 
!includes.contains(key)) {</span>
+<span class="source-line-no">227</span><span id="line-227">                
return true;</span>
+<span class="source-line-no">228</span><span id="line-228">            }</span>
 <span class="source-line-no">229</span><span id="line-229"></span>
-<span class="source-line-no">230</span><span id="line-230">        public 
List&lt;List&lt;DependencyNode&gt;&gt; getConflicts() {</span>
-<span class="source-line-no">231</span><span id="line-231">            
List&lt;List&lt;DependencyNode&gt;&gt; output = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">232</span><span id="line-232">            for 
(List&lt;DependencyNodeHopCountPair&gt; pairs : keyToPairsMap.values()) {</span>
-<span class="source-line-no">233</span><span id="line-233">                if 
(containsConflicts(pairs)) {</span>
-<span class="source-line-no">234</span><span id="line-234">                    
List&lt;DependencyNode&gt; outputSubList = new 
ArrayList&lt;&gt;(pairs.size());</span>
-<span class="source-line-no">235</span><span id="line-235">                    
for (DependencyNodeHopCountPair pair : pairs) {</span>
-<span class="source-line-no">236</span><span id="line-236">                    
    outputSubList.add(pair.getNode());</span>
-<span class="source-line-no">237</span><span id="line-237">                    
}</span>
-<span class="source-line-no">238</span><span id="line-238">                    
output.add(outputSubList);</span>
-<span class="source-line-no">239</span><span id="line-239">                
}</span>
-<span class="source-line-no">240</span><span id="line-240">            }</span>
-<span class="source-line-no">241</span><span id="line-241">            return 
output;</span>
-<span class="source-line-no">242</span><span id="line-242">        }</span>
-<span class="source-line-no">243</span><span id="line-243"></span>
-<span class="source-line-no">244</span><span id="line-244">        private 
boolean containsConflicts(List&lt;DependencyNodeHopCountPair&gt; pairs) {</span>
-<span class="source-line-no">245</span><span id="line-245">            
DependencyNodeHopCountPair resolvedPair = pairs.get(0);</span>
-<span class="source-line-no">246</span><span id="line-246">            
ArtifactVersion resolvedVersion = 
resolvedPair.extractArtifactVersion(uniqueVersions, false);</span>
-<span class="source-line-no">247</span><span id="line-247"></span>
-<span class="source-line-no">248</span><span id="line-248">            for 
(DependencyNodeHopCountPair pair : pairs) {</span>
-<span class="source-line-no">249</span><span id="line-249">                
ArtifactVersion version = pair.extractArtifactVersion(uniqueVersions, 
true);</span>
-<span class="source-line-no">250</span><span id="line-250">                if 
(resolvedVersion.compareTo(version) &lt; 0) {</span>
-<span class="source-line-no">251</span><span id="line-251">                    
return true;</span>
-<span class="source-line-no">252</span><span id="line-252">                
}</span>
-<span class="source-line-no">253</span><span id="line-253">            }</span>
-<span class="source-line-no">254</span><span id="line-254">            return 
false;</span>
-<span class="source-line-no">255</span><span id="line-255">        }</span>
-<span class="source-line-no">256</span><span id="line-256"></span>
-<span class="source-line-no">257</span><span id="line-257">        
@Override</span>
-<span class="source-line-no">258</span><span id="line-258">        public 
DependencyNode getParent(DependencyNode node) {</span>
-<span class="source-line-no">259</span><span id="line-259">            return 
parentsVisitor.getParent(node);</span>
-<span class="source-line-no">260</span><span id="line-260">        }</span>
-<span class="source-line-no">261</span><span id="line-261">    }</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
-<span class="source-line-no">263</span><span id="line-263">    private static 
class DependencyNodeHopCountPair implements 
Comparable&lt;DependencyNodeHopCountPair&gt; {</span>
-<span class="source-line-no">264</span><span id="line-264">        private 
final DependencyNode node;</span>
-<span class="source-line-no">265</span><span id="line-265">        private int 
hopCount;</span>
-<span class="source-line-no">266</span><span id="line-266">        private 
final ParentNodeProvider parentNodeProvider;</span>
-<span class="source-line-no">267</span><span id="line-267"></span>
-<span class="source-line-no">268</span><span id="line-268">        private 
DependencyNodeHopCountPair(DependencyNode node, ParentNodeProvider 
parentNodeProvider) {</span>
-<span class="source-line-no">269</span><span id="line-269">            
this.parentNodeProvider = parentNodeProvider;</span>
-<span class="source-line-no">270</span><span id="line-270">            
this.node = node;</span>
-<span class="source-line-no">271</span><span id="line-271">            
countHops();</span>
-<span class="source-line-no">272</span><span id="line-272">        }</span>
-<span class="source-line-no">273</span><span id="line-273"></span>
-<span class="source-line-no">274</span><span id="line-274">        private 
void countHops() {</span>
-<span class="source-line-no">275</span><span id="line-275">            
hopCount = 0;</span>
-<span class="source-line-no">276</span><span id="line-276">            
DependencyNode parent = parentNodeProvider.getParent(node);</span>
-<span class="source-line-no">277</span><span id="line-277">            while 
(parent != null) {</span>
-<span class="source-line-no">278</span><span id="line-278">                
hopCount++;</span>
-<span class="source-line-no">279</span><span id="line-279">                
parent = parentNodeProvider.getParent(parent);</span>
-<span class="source-line-no">280</span><span id="line-280">            }</span>
-<span class="source-line-no">281</span><span id="line-281">        }</span>
-<span class="source-line-no">282</span><span id="line-282"></span>
-<span class="source-line-no">283</span><span id="line-283">        private 
String constructKey() {</span>
-<span class="source-line-no">284</span><span id="line-284">            
Artifact artifact = ArtifactUtils.toArtifact(node);</span>
-<span class="source-line-no">285</span><span id="line-285">            return 
artifact.getGroupId() + ":" + artifact.getArtifactId();</span>
-<span class="source-line-no">286</span><span id="line-286">        }</span>
-<span class="source-line-no">287</span><span id="line-287"></span>
-<span class="source-line-no">288</span><span id="line-288">        public 
DependencyNode getNode() {</span>
-<span class="source-line-no">289</span><span id="line-289">            return 
node;</span>
-<span class="source-line-no">290</span><span id="line-290">        }</span>
-<span class="source-line-no">291</span><span id="line-291"></span>
-<span class="source-line-no">292</span><span id="line-292">        private 
ArtifactVersion extractArtifactVersion(boolean uniqueVersions, boolean 
usePremanagedVersion) {</span>
-<span class="source-line-no">293</span><span id="line-293">            if 
(usePremanagedVersion &amp;&amp; 
DependencyManagerUtils.getPremanagedVersion(node) != null) {</span>
-<span class="source-line-no">294</span><span id="line-294">                
return new 
DefaultArtifactVersion(DependencyManagerUtils.getPremanagedVersion(node));</span>
-<span class="source-line-no">295</span><span id="line-295">            }</span>
-<span class="source-line-no">296</span><span id="line-296"></span>
-<span class="source-line-no">297</span><span id="line-297">            
Artifact artifact = ArtifactUtils.toArtifact(node);</span>
-<span class="source-line-no">298</span><span id="line-298">            String 
version = uniqueVersions ? artifact.getVersion() : 
artifact.getBaseVersion();</span>
-<span class="source-line-no">299</span><span id="line-299">            if 
(version != null) {</span>
-<span class="source-line-no">300</span><span id="line-300">                
return new DefaultArtifactVersion(version);</span>
-<span class="source-line-no">301</span><span id="line-301">            }</span>
-<span class="source-line-no">302</span><span id="line-302">            try 
{</span>
-<span class="source-line-no">303</span><span id="line-303">                
return artifact.getSelectedVersion();</span>
-<span class="source-line-no">304</span><span id="line-304">            } catch 
(OverConstrainedVersionException e) {</span>
-<span class="source-line-no">305</span><span id="line-305">                
throw new RuntimeException("Version ranges problem with " + node.getArtifact(), 
e);</span>
-<span class="source-line-no">306</span><span id="line-306">            }</span>
-<span class="source-line-no">307</span><span id="line-307">        }</span>
-<span class="source-line-no">308</span><span id="line-308"></span>
-<span class="source-line-no">309</span><span id="line-309">        public int 
getHopCount() {</span>
-<span class="source-line-no">310</span><span id="line-310">            return 
hopCount;</span>
-<span class="source-line-no">311</span><span id="line-311">        }</span>
-<span class="source-line-no">312</span><span id="line-312"></span>
-<span class="source-line-no">313</span><span id="line-313">        public int 
compareTo(DependencyNodeHopCountPair other) {</span>
-<span class="source-line-no">314</span><span id="line-314">            return 
Integer.compare(hopCount, other.getHopCount());</span>
-<span class="source-line-no">315</span><span id="line-315">        }</span>
-<span class="source-line-no">316</span><span id="line-316">    }</span>
-<span class="source-line-no">317</span><span id="line-317">}</span>
+<span class="source-line-no">230</span><span id="line-230">            
keyToPairsMap.computeIfAbsent(key, k1 -&gt; new 
ArrayList&lt;&gt;()).add(pair);</span>
+<span class="source-line-no">231</span><span id="line-231">            
keyToPairsMap.get(key).sort(DependencyNodeHopCountPair::compareTo);</span>
+<span class="source-line-no">232</span><span id="line-232">            return 
true;</span>
+<span class="source-line-no">233</span><span id="line-233">        }</span>
+<span class="source-line-no">234</span><span id="line-234"></span>
+<span class="source-line-no">235</span><span id="line-235">        
@Override</span>
+<span class="source-line-no">236</span><span id="line-236">        public 
boolean visitLeave(DependencyNode node) {</span>
+<span class="source-line-no">237</span><span id="line-237">            return 
parentsVisitor.visitLeave(node);</span>
+<span class="source-line-no">238</span><span id="line-238">        }</span>
+<span class="source-line-no">239</span><span id="line-239"></span>
+<span class="source-line-no">240</span><span id="line-240">        public 
List&lt;List&lt;DependencyNode&gt;&gt; getConflicts() {</span>
+<span class="source-line-no">241</span><span id="line-241">            
List&lt;List&lt;DependencyNode&gt;&gt; output = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">242</span><span id="line-242">            for 
(List&lt;DependencyNodeHopCountPair&gt; pairs : keyToPairsMap.values()) {</span>
+<span class="source-line-no">243</span><span id="line-243">                if 
(containsConflicts(pairs)) {</span>
+<span class="source-line-no">244</span><span id="line-244">                    
List&lt;DependencyNode&gt; outputSubList = new 
ArrayList&lt;&gt;(pairs.size());</span>
+<span class="source-line-no">245</span><span id="line-245">                    
for (DependencyNodeHopCountPair pair : pairs) {</span>
+<span class="source-line-no">246</span><span id="line-246">                    
    outputSubList.add(pair.getNode());</span>
+<span class="source-line-no">247</span><span id="line-247">                    
}</span>
+<span class="source-line-no">248</span><span id="line-248">                    
output.add(outputSubList);</span>
+<span class="source-line-no">249</span><span id="line-249">                
}</span>
+<span class="source-line-no">250</span><span id="line-250">            }</span>
+<span class="source-line-no">251</span><span id="line-251">            return 
output;</span>
+<span class="source-line-no">252</span><span id="line-252">        }</span>
+<span class="source-line-no">253</span><span id="line-253"></span>
+<span class="source-line-no">254</span><span id="line-254">        private 
boolean containsConflicts(List&lt;DependencyNodeHopCountPair&gt; pairs) {</span>
+<span class="source-line-no">255</span><span id="line-255">            
DependencyNodeHopCountPair resolvedPair = pairs.get(0);</span>
+<span class="source-line-no">256</span><span id="line-256">            
ArtifactVersion resolvedVersion = 
resolvedPair.extractArtifactVersion(uniqueVersions, false);</span>
+<span class="source-line-no">257</span><span id="line-257"></span>
+<span class="source-line-no">258</span><span id="line-258">            for 
(DependencyNodeHopCountPair pair : pairs) {</span>
+<span class="source-line-no">259</span><span id="line-259">                
ArtifactVersion version = pair.extractArtifactVersion(uniqueVersions, 
true);</span>
+<span class="source-line-no">260</span><span id="line-260">                if 
(resolvedVersion.compareTo(version) &lt; 0) {</span>
+<span class="source-line-no">261</span><span id="line-261">                    
return true;</span>
+<span class="source-line-no">262</span><span id="line-262">                
}</span>
+<span class="source-line-no">263</span><span id="line-263">            }</span>
+<span class="source-line-no">264</span><span id="line-264">            return 
false;</span>
+<span class="source-line-no">265</span><span id="line-265">        }</span>
+<span class="source-line-no">266</span><span id="line-266"></span>
+<span class="source-line-no">267</span><span id="line-267">        
@Override</span>
+<span class="source-line-no">268</span><span id="line-268">        public 
DependencyNode getParent(DependencyNode node) {</span>
+<span class="source-line-no">269</span><span id="line-269">            return 
parentsVisitor.getParent(node);</span>
+<span class="source-line-no">270</span><span id="line-270">        }</span>
+<span class="source-line-no">271</span><span id="line-271">    }</span>
+<span class="source-line-no">272</span><span id="line-272"></span>
+<span class="source-line-no">273</span><span id="line-273">    private static 
class DependencyNodeHopCountPair implements 
Comparable&lt;DependencyNodeHopCountPair&gt; {</span>
+<span class="source-line-no">274</span><span id="line-274">        private 
final DependencyNode node;</span>
+<span class="source-line-no">275</span><span id="line-275">        private int 
hopCount;</span>
+<span class="source-line-no">276</span><span id="line-276">        private 
final ParentNodeProvider parentNodeProvider;</span>
+<span class="source-line-no">277</span><span id="line-277"></span>
+<span class="source-line-no">278</span><span id="line-278">        private 
DependencyNodeHopCountPair(DependencyNode node, ParentNodeProvider 
parentNodeProvider) {</span>
+<span class="source-line-no">279</span><span id="line-279">            
this.parentNodeProvider = parentNodeProvider;</span>
+<span class="source-line-no">280</span><span id="line-280">            
this.node = node;</span>
+<span class="source-line-no">281</span><span id="line-281">            
countHops();</span>
+<span class="source-line-no">282</span><span id="line-282">        }</span>
+<span class="source-line-no">283</span><span id="line-283"></span>
+<span class="source-line-no">284</span><span id="line-284">        private 
void countHops() {</span>
+<span class="source-line-no">285</span><span id="line-285">            
hopCount = 0;</span>
+<span class="source-line-no">286</span><span id="line-286">            
DependencyNode parent = parentNodeProvider.getParent(node);</span>
+<span class="source-line-no">287</span><span id="line-287">            while 
(parent != null) {</span>
+<span class="source-line-no">288</span><span id="line-288">                
hopCount++;</span>
+<span class="source-line-no">289</span><span id="line-289">                
parent = parentNodeProvider.getParent(parent);</span>
+<span class="source-line-no">290</span><span id="line-290">            }</span>
+<span class="source-line-no">291</span><span id="line-291">        }</span>
+<span class="source-line-no">292</span><span id="line-292"></span>
+<span class="source-line-no">293</span><span id="line-293">        private 
String constructKey() {</span>
+<span class="source-line-no">294</span><span id="line-294">            
Artifact artifact = ArtifactUtils.toArtifact(node);</span>
+<span class="source-line-no">295</span><span id="line-295">            return 
artifact.getGroupId() + ":" + artifact.getArtifactId();</span>
+<span class="source-line-no">296</span><span id="line-296">        }</span>
+<span class="source-line-no">297</span><span id="line-297"></span>
+<span class="source-line-no">298</span><span id="line-298">        public 
DependencyNode getNode() {</span>
+<span class="source-line-no">299</span><span id="line-299">            return 
node;</span>
+<span class="source-line-no">300</span><span id="line-300">        }</span>
+<span class="source-line-no">301</span><span id="line-301"></span>
+<span class="source-line-no">302</span><span id="line-302">        private 
ArtifactVersion extractArtifactVersion(boolean uniqueVersions, boolean 
usePremanagedVersion) {</span>
+<span class="source-line-no">303</span><span id="line-303">            if 
(usePremanagedVersion &amp;&amp; 
DependencyManagerUtils.getPremanagedVersion(node) != null) {</span>
+<span class="source-line-no">304</span><span id="line-304">                
return new 
DefaultArtifactVersion(DependencyManagerUtils.getPremanagedVersion(node));</span>
+<span class="source-line-no">305</span><span id="line-305">            }</span>
+<span class="source-line-no">306</span><span id="line-306"></span>
+<span class="source-line-no">307</span><span id="line-307">            
Artifact artifact = ArtifactUtils.toArtifact(node);</span>
+<span class="source-line-no">308</span><span id="line-308">            String 
version = uniqueVersions ? artifact.getVersion() : 
artifact.getBaseVersion();</span>
+<span class="source-line-no">309</span><span id="line-309">            if 
(version != null) {</span>
+<span class="source-line-no">310</span><span id="line-310">                
return new DefaultArtifactVersion(version);</span>
+<span class="source-line-no">311</span><span id="line-311">            }</span>
+<span class="source-line-no">312</span><span id="line-312">            try 
{</span>
+<span class="source-line-no">313</span><span id="line-313">                
return artifact.getSelectedVersion();</span>
+<span class="source-line-no">314</span><span id="line-314">            } catch 
(OverConstrainedVersionException e) {</span>
+<span class="source-line-no">315</span><span id="line-315">                
throw new RuntimeException("Version ranges problem with " + node.getArtifact(), 
e);</span>
+<span class="source-line-no">316</span><span id="line-316">            }</span>
+<span class="source-line-no">317</span><span id="line-317">        }</span>
+<span class="source-line-no">318</span><span id="line-318"></span>
+<span class="source-line-no">319</span><span id="line-319">        public int 
getHopCount() {</span>
+<span class="source-line-no">320</span><span id="line-320">            return 
hopCount;</span>
+<span class="source-line-no">321</span><span id="line-321">        }</span>
+<span class="source-line-no">322</span><span id="line-322"></span>
+<span class="source-line-no">323</span><span id="line-323">        public int 
compareTo(DependencyNodeHopCountPair other) {</span>
+<span class="source-line-no">324</span><span id="line-324">            return 
Integer.compare(hopCount, other.getHopCount());</span>
+<span class="source-line-no">325</span><span id="line-325">        }</span>
+<span class="source-line-no">326</span><span id="line-326">    }</span>
+<span class="source-line-no">327</span><span id="line-327">}</span>
 
 
 

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/type-search-index.js
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/type-search-index.js
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/type-search-index.js
 Sat Apr  1 21:10:25 2023
@@ -1 +1 @@
-typeSearchIndex = 
[{"p":"org.apache.maven.enforcer.rules","l":"AbstractStandardEnforcerRule"},{"l":"All
 Classes and 
Interfaces","u":"allclasses-index.html"},{"p":"org.apache.maven.enforcer.rules","l":"AlwaysFail"},{"p":"org.apache.maven.enforcer.rules","l":"AlwaysPass"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactMatcher"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactUtils"},{"p":"org.apache.maven.enforcer.rules","l":"BanDependencyManagementScope"},{"p":"org.apache.maven.enforcer.rules","l":"BanDistributionManagement"},{"p":"org.apache.maven.enforcer.rules","l":"BanDuplicatePomDependencyVersions"},{"p":"org.apache.maven.enforcer.rules","l":"BanDynamicVersions"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"BannedDependencies"},{"p":"org.apache.maven.enforcer.rules","l":"BannedPlugins"},{"p":"org.apache.maven.enforcer.rules","l":"BannedRepositories"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"BanTransitiveDependencies"},{"p":"org.apache
 
.maven.enforcer.rules.dependency","l":"DependencyConvergence"},{"p":"org.apache.maven.enforcer.rules.utils","l":"EnforcerRuleUtils"},{"p":"org.apache.maven.enforcer.rules","l":"EvaluateBeanshell"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ExpressionEvaluator"},{"p":"org.apache.maven.enforcer.rules","l":"ExternalRules"},{"p":"org.apache.maven.enforcer.rules.utils","l":"OSUtil"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ParentNodeProvider"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ParentsVisitor"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactMatcher.Pattern"},{"p":"org.apache.maven.enforcer.rules.utils","l":"PluginWrapper"},{"p":"org.apache.maven.enforcer.rules","l":"ReactorModuleConvergence"},{"p":"org.apache.maven.enforcer.rules","l":"RequireActiveProfile"},{"p":"org.apache.maven.enforcer.rules.property","l":"RequireEnvironmentVariable"},{"p":"org.apache.maven.enforcer.rules","l":"RequireExplicitDependencyScope"},{"p":"org.apache.maven.enforcer.
 
rules.checksum","l":"RequireFileChecksum"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesDontExist"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesExist"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesSize"},{"p":"org.apache.maven.enforcer.rules","l":"RequireJavaVendor"},{"p":"org.apache.maven.enforcer.rules.version","l":"RequireJavaVersion"},{"p":"org.apache.maven.enforcer.rules.version","l":"RequireMavenVersion"},{"p":"org.apache.maven.enforcer.rules","l":"RequireNoRepositories"},{"p":"org.apache.maven.enforcer.rules","l":"RequireOS"},{"p":"org.apache.maven.enforcer.rules","l":"RequirePluginVersions"},{"p":"org.apache.maven.enforcer.rules","l":"RequirePrerequisite"},{"p":"org.apache.maven.enforcer.rules","l":"RequireProfileIdsExist"},{"p":"org.apache.maven.enforcer.rules.property","l":"RequireProperty"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"RequireReleaseDeps"},{"p":"org.apache.maven.enforcer.rules","l":"RequireRelea
 
seVersion"},{"p":"org.apache.maven.enforcer.rules","l":"RequireSameVersions"},{"p":"org.apache.maven.enforcer.rules","l":"RequireSnapshotVersion"},{"p":"org.apache.maven.enforcer.rules.checksum","l":"RequireTextFileChecksum"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"RequireUpperBoundDeps"}];updateSearchResults();
\ No newline at end of file
+typeSearchIndex = 
[{"p":"org.apache.maven.enforcer.rules","l":"AbstractStandardEnforcerRule"},{"l":"All
 Classes and 
Interfaces","u":"allclasses-index.html"},{"p":"org.apache.maven.enforcer.rules","l":"AlwaysFail"},{"p":"org.apache.maven.enforcer.rules","l":"AlwaysPass"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactMatcher"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactUtils"},{"p":"org.apache.maven.enforcer.rules","l":"BanDependencyManagementScope"},{"p":"org.apache.maven.enforcer.rules","l":"BanDistributionManagement"},{"p":"org.apache.maven.enforcer.rules","l":"BanDuplicatePomDependencyVersions"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"BanDynamicVersions"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"BannedDependencies"},{"p":"org.apache.maven.enforcer.rules","l":"BannedPlugins"},{"p":"org.apache.maven.enforcer.rules","l":"BannedRepositories"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"BanTransitiveDependencies"},{"p":
 
"org.apache.maven.enforcer.rules.dependency","l":"DependencyConvergence"},{"p":"org.apache.maven.enforcer.rules.utils","l":"EnforcerRuleUtils"},{"p":"org.apache.maven.enforcer.rules","l":"EvaluateBeanshell"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ExpressionEvaluator"},{"p":"org.apache.maven.enforcer.rules","l":"ExternalRules"},{"p":"org.apache.maven.enforcer.rules.utils","l":"OSUtil"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ParentNodeProvider"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ParentsVisitor"},{"p":"org.apache.maven.enforcer.rules.utils","l":"ArtifactMatcher.Pattern"},{"p":"org.apache.maven.enforcer.rules.utils","l":"PluginWrapper"},{"p":"org.apache.maven.enforcer.rules","l":"ReactorModuleConvergence"},{"p":"org.apache.maven.enforcer.rules","l":"RequireActiveProfile"},{"p":"org.apache.maven.enforcer.rules.property","l":"RequireEnvironmentVariable"},{"p":"org.apache.maven.enforcer.rules","l":"RequireExplicitDependencyScope"},{"p":"org.apache.mave
 
n.enforcer.rules.checksum","l":"RequireFileChecksum"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesDontExist"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesExist"},{"p":"org.apache.maven.enforcer.rules.files","l":"RequireFilesSize"},{"p":"org.apache.maven.enforcer.rules","l":"RequireJavaVendor"},{"p":"org.apache.maven.enforcer.rules.version","l":"RequireJavaVersion"},{"p":"org.apache.maven.enforcer.rules.version","l":"RequireMavenVersion"},{"p":"org.apache.maven.enforcer.rules","l":"RequireNoRepositories"},{"p":"org.apache.maven.enforcer.rules","l":"RequireOS"},{"p":"org.apache.maven.enforcer.rules","l":"RequirePluginVersions"},{"p":"org.apache.maven.enforcer.rules","l":"RequirePrerequisite"},{"p":"org.apache.maven.enforcer.rules","l":"RequireProfileIdsExist"},{"p":"org.apache.maven.enforcer.rules.property","l":"RequireProperty"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"RequireReleaseDeps"},{"p":"org.apache.maven.enforcer.rules","l":"R
 
equireReleaseVersion"},{"p":"org.apache.maven.enforcer.rules","l":"RequireSameVersions"},{"p":"org.apache.maven.enforcer.rules","l":"RequireSnapshotVersion"},{"p":"org.apache.maven.enforcer.rules.checksum","l":"RequireTextFileChecksum"},{"p":"org.apache.maven.enforcer.rules.dependency","l":"RequireUpperBoundDeps"}];updateSearchResults();
\ No newline at end of file

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDependencyManagementScope.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDependencyManagementScope.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDependencyManagementScope.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDependencyManagementScope.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDependencyManagementScope.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -50,9 +50,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Ban Dependency Management Scope <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Ban Dependency Management Scope <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/banDependencyManagementScope.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -131,7 +131,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;ban-dependency-management-scope&lt;/id&gt;

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDistributionManagement.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDistributionManagement.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDistributionManagement.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDistributionManagement.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDistributionManagement.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -50,9 +50,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Ban Distribution Management <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Ban Distribution Management <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/banDistributionManagement.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -122,7 +122,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;no-distribution-management-at-all&lt;/id&gt;
@@ -150,7 +150,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;no-distribution-management-at-all&lt;/id&gt;

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDuplicatePomDependencyVersions.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDuplicatePomDependencyVersions.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDuplicatePomDependencyVersions.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDuplicatePomDependencyVersions.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDuplicatePomDependencyVersions.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -50,9 +50,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Ban Duplicate Pom Dependency Versions <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Ban Duplicate Pom Dependency Versions <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/banDuplicatePomDependencyVersions.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -117,7 +117,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;no-duplicate-declared-dependencies&lt;/id&gt;

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDynamicVersions.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDynamicVersions.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banDynamicVersions.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDynamicVersions.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banDynamicVersions.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -50,9 +50,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Ban Dynamic Versions <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/banDynamicVersions.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Ban Dynamic Versions <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/banDynamicVersions.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -108,7 +108,7 @@
         <main id="bodyColumn"  class="span10" >
 <section>
 <h2><a name="Ban_Dynamic_Versions"></a>Ban Dynamic Versions</h2>
-<p>This rule bans dependencies having versions which require resolving (i.e. 
dynamic versions which might change with each build and require lookup of <a 
class="externalLink" 
href="https://maven.apache.org/ref/3-LATEST/maven-repository-metadata/repository-metadata.html";>repositoy
 metadata</a>). Dynamic versions are either </p>
+<p>This rule bans dependencies having versions that require resolving (i.e. 
dynamic versions which might change with each build and require lookup of <a 
class="externalLink" 
href="https://maven.apache.org/ref/3-LATEST/maven-repository-metadata/repository-metadata.html";>repository
 metadata</a>). Dynamic versions are either</p>
 <ul>
 <li><a class="externalLink" 
href="https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification";>version
 ranges</a>, i.e. all version strings starting with either <code>[</code> or 
<code>(</code>,</li>
 <li>the special placeholders <code>LATEST</code>/<code>RELEASE</code> or</li>
@@ -118,10 +118,10 @@
 <li><b>allowSnapshots</b> - if <code>true</code> dependencies with versions 
ending with <code>-SNAPSHOT</code> will not be banned. Default is 
<code>false</code>.</li>
 <li><b>allowRelease</b> - if <code>true</code> dependencies with version 
placeholder <code>RELEASE</code> will not be banned. Default is 
<code>false</code>.</li>
 <li><b>allowLatest</b> - if <code>true</code> dependencies with versions 
placeholder <code>LATEST</code> will not be banned. Default is 
<code>false</code>.</li>
-<li><b>allowRanges</b> - if <code>true</code> versions ending with 
<code>-SNAPSHOT</code> will not be banned. Default is <code>false</code>.</li>
-<li><b>allowRangesWithIdenticalBounds</b> - if <code>true</code> ranges having 
a range with same upper and lower bound (always inclusive) will not be banned 
(although they require resolving).</li>
-<li><b>excludeOptionals</b> - if <code>true</code> optional dependencies won't 
be checked. Default is <code>false</code>.</li>
-<li><b>excludedScopes</b> - the list of scopes to exclude. By default no 
scopes are excluded.</li>
+<li><b>allowRanges</b> - if <code>true</code> versions starting with either 
<code>[</code> or <code>(</code> will not be banned. Default is 
<code>false</code>.</li>
+<li><b>allowRangesWithIdenticalBounds</b> - if <code>true</code> ranges having 
a range with same upper and lower bound (always inclusive) will not be banned 
(although they require resolving in some Maven versions, <a 
class="externalLink" 
href="https://issues.apache.org/jira/browse/MNG-7561";>MNG-7461</a>).</li>
+<li><b>excludeOptionals</b> - if <code>true</code> direct optional 
dependencies won't be checked. Default is <code>false</code>.</li>
+<li><b>excludedScopes</b> - the list of scopes to exclude from direct 
dependencies. By default no scopes are excluded. For transitive dependencies 
the regular Maven rules are applied.</li>
 <li><b>ignores</b> - a list of dependencies to ignore. The format is 
<code>groupId[:artifactId[:version[:type[:scope:[classifier]]]]]</code> where 
<code>artifactId</code>, <code>version</code>, <code>type</code>, 
<code>scope</code> and <code>classifier</code> are optional (but require all 
previous parts). Wildcards may be used to replace an entire or just parts of a 
section. Examples:
 <ul>
 <li><code>org.apache.maven</code></li>
@@ -138,7 +138,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;ban-dynamic-versions&lt;/id&gt;
@@ -150,7 +150,7 @@
                 &lt;banDynamicVersions&gt;
                   &lt;ignores&gt;
                     &lt;ignore&gt;org.apache.maven&lt;/ignore&gt;
-                  &lt;/ignore&gt;
+                  &lt;/ignores&gt;
                   &lt;allowSnapshots&gt;true&lt;/allowSnapshots&gt;
                 &lt;/banDynamicVersions&gt;
               &lt;/rules&gt;

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banTransitiveDependencies.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banTransitiveDependencies.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/banTransitiveDependencies.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banTransitiveDependencies.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/banTransitiveDependencies.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -49,9 +49,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Ban Transitive Dependencies <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Ban Transitive Dependencies <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/banTransitiveDependencies.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -121,7 +121,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;enforce-banned-dependencies&lt;/id&gt;

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/bannedDependencies.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/bannedDependencies.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/bannedDependencies.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/bannedDependencies.apt.vm at 2023-01-28
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from 
src/site/apt/bannedDependencies.apt.vm at 2023-04-01
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
@@ -50,9 +50,9 @@
       <li class=""><a href="../../index.html" title="Maven">Maven</a><span 
class="divider">/</span></li>
       <li class=""><a href="../index.html" title="Enforcer">Enforcer</a><span 
class="divider">/</span></li>
       <li class=""><a href="index.html" title="Apache Maven Enforcer Built-In 
Rules">Apache Maven Enforcer Built-In Rules</a><span 
class="divider">/</span></li>
-    <li class="active ">Banned Dependencies <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.2.1/enforcer-rules/src/site/apt/bannedDependencies.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
-        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-01-28</li>
-          <li id="projectVersion" class="pull-right">Version: 3.2.1</li>
+    <li class="active ">Banned Dependencies <a 
href="https://github.com/apache/maven-enforcer/tree/enforcer-3.3.0/enforcer-rules/src/site/apt/bannedDependencies.apt.vm";><img
 src="./images/accessories-text-editor.png" title="Edit" /></a></li>
+        <li id="publishDate" class="pull-right"><span class="divider">|</span> 
Last Published: 2023-04-01</li>
+          <li id="projectVersion" class="pull-right">Version: 3.3.0</li>
           </ul>
         </div>
       </header>
@@ -133,7 +133,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;enforce-banned-dependencies&lt;/id&gt;
@@ -171,7 +171,7 @@
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
         &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
-        &lt;version&gt;3.2.1&lt;/version&gt;
+        &lt;version&gt;3.3.0&lt;/version&gt;
         &lt;executions&gt;
           &lt;execution&gt;
             &lt;id&gt;enforce-banned-dependencies&lt;/id&gt;



Reply via email to