Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/org/apache/maven/enforcer/rules/version/package-use.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/org/apache/maven/enforcer/rules/version/package-use.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/org/apache/maven/enforcer/rules/version/package-use.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Package org.apache.maven.enforcer.rules.version (Apache Maven 
Enforcer Built-In Rules 3.2.1 API)</title>
+<title>Uses of Package org.apache.maven.enforcer.rules.version (Apache Maven 
Enforcer Built-In Rules 3.3.0 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: 
org.apache.maven.enforcer.rules.version">

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-summary.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-summary.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-summary.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Apache Maven Enforcer Built-In Rules 3.2.1 API</title>
+<title>Apache Maven Enforcer Built-In Rules 3.3.0 API</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="index redirect">

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-tree.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-tree.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/overview-tree.html
 Sat Apr  1 21:10:25 2023
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Class Hierarchy (Apache Maven Enforcer Built-In Rules 3.2.1 API)</title>
+<title>Class Hierarchy (Apache Maven Enforcer Built-In Rules 3.3.0 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="class tree">
@@ -74,7 +74,7 @@ loadScripts(document, 'script');</script
 <li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BanDependencyManagementScope.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BanDependencyManagementScope</a></li>
 <li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BanDistributionManagement.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BanDistributionManagement</a></li>
 <li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BanDuplicatePomDependencyVersions</a></li>
-<li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BanDynamicVersions.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BanDynamicVersions</a></li>
+<li class="circle">org.apache.maven.enforcer.rules.dependency.<a 
href="org/apache/maven/enforcer/rules/dependency/BanDynamicVersions.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules.dependency">BanDynamicVersions</a></li>
 <li class="circle">org.apache.maven.enforcer.rules.dependency.<a 
href="org/apache/maven/enforcer/rules/dependency/BannedDependencies.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules.dependency">BannedDependencies</a></li>
 <li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BannedPlugins.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BannedPlugins</a></li>
 <li class="circle">org.apache.maven.enforcer.rules.<a 
href="org/apache/maven/enforcer/rules/BannedRepositories.html" 
class="type-name-link" title="class in 
org.apache.maven.enforcer.rules">BannedRepositories</a></li>

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/BanDuplicatePomDependencyVersions.html
 Sat Apr  1 21:10:25 2023
@@ -167,9 +167,9 @@
 <span class="source-line-no">154</span><span id="line-154">                    
    .append(prefix)</span>
 <span class="source-line-no">155</span><span id="line-155">                    
    .append('[')</span>
 <span class="source-line-no">156</span><span id="line-156">                    
    .append(entry.getKey())</span>
-<span class="source-line-no">157</span><span id="line-157">                    
    .append("] ( ")</span>
+<span class="source-line-no">157</span><span id="line-157">                    
    .append("] (")</span>
 <span class="source-line-no">158</span><span id="line-158">                    
    .append(entry.getValue())</span>
-<span class="source-line-no">159</span><span id="line-159">                    
    .append(" times )" + System.lineSeparator());</span>
+<span class="source-line-no">159</span><span id="line-159">                    
    .append(" times)" + System.lineSeparator());</span>
 <span class="source-line-no">160</span><span id="line-160">            }</span>
 <span class="source-line-no">161</span><span id="line-161">        }</span>
 <span class="source-line-no">162</span><span id="line-162">    }</span>

Added: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanDynamicVersions.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanDynamicVersions.html
 (added)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanDynamicVersions.html
 Sat Apr  1 21:10:25 2023
@@ -0,0 +1,339 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.maven.enforcer.rules.dependency, class: BanDynamicVersions">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one</span>
+<span class="source-line-no">003</span><span id="line-3"> * or more 
contributor license agreements.  See the NOTICE file</span>
+<span class="source-line-no">004</span><span id="line-4"> * distributed with 
this work for additional information</span>
+<span class="source-line-no">005</span><span id="line-5"> * regarding 
copyright ownership.  The ASF licenses this file</span>
+<span class="source-line-no">006</span><span id="line-6"> * to you under the 
Apache License, Version 2.0 (the</span>
+<span class="source-line-no">007</span><span id="line-7"> * "License"); you 
may not use this file except in compliance</span>
+<span class="source-line-no">008</span><span id="line-8"> * with the License.  
You may obtain a copy of the License at</span>
+<span class="source-line-no">009</span><span id="line-9"> *</span>
+<span class="source-line-no">010</span><span id="line-10"> *   
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">011</span><span id="line-11"> *</span>
+<span class="source-line-no">012</span><span id="line-12"> * Unless required 
by applicable law or agreed to in writing,</span>
+<span class="source-line-no">013</span><span id="line-13"> * software 
distributed under the License is distributed on an</span>
+<span class="source-line-no">014</span><span id="line-14"> * "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
+<span class="source-line-no">015</span><span id="line-15"> * KIND, either 
express or implied.  See the License for the</span>
+<span class="source-line-no">016</span><span id="line-16"> * specific language 
governing permissions and limitations</span>
+<span class="source-line-no">017</span><span id="line-17"> * under the 
License.</span>
+<span class="source-line-no">018</span><span id="line-18"> */</span>
+<span class="source-line-no">019</span><span id="line-19">package 
org.apache.maven.enforcer.rules.dependency;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
javax.inject.Inject;</span>
+<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.text.ChoiceFormat;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
java.util.ArrayDeque;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
java.util.ArrayList;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
java.util.Collection;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
java.util.Collections;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
java.util.Deque;</span>
+<span class="source-line-no">030</span><span id="line-30">import 
java.util.List;</span>
+<span class="source-line-no">031</span><span id="line-31">import 
java.util.Objects;</span>
+<span class="source-line-no">032</span><span id="line-32">import 
java.util.function.Predicate;</span>
+<span class="source-line-no">033</span><span id="line-33">import 
java.util.stream.Collectors;</span>
+<span class="source-line-no">034</span><span id="line-34"></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.ArtifactMatcher;</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.execution.MavenSession;</span>
+<span class="source-line-no">040</span><span id="line-40">import 
org.apache.maven.project.MavenProject;</span>
+<span class="source-line-no">041</span><span id="line-41">import 
org.eclipse.aether.RepositorySystem;</span>
+<span class="source-line-no">042</span><span id="line-42">import 
org.eclipse.aether.collection.DependencyCollectionException;</span>
+<span class="source-line-no">043</span><span id="line-43">import 
org.eclipse.aether.graph.DependencyNode;</span>
+<span class="source-line-no">044</span><span id="line-44">import 
org.eclipse.aether.graph.DependencyVisitor;</span>
+<span class="source-line-no">045</span><span id="line-45">import 
org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;</span>
+<span class="source-line-no">046</span><span id="line-46">import 
org.eclipse.aether.version.VersionConstraint;</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"> * This rule bans 
dependencies having a version which requires resolution (i.e. dynamic versions 
which might change with</span>
+<span class="source-line-no">050</span><span id="line-50"> * each build). 
Dynamic versions are either</span>
+<span class="source-line-no">051</span><span id="line-51"> * &lt;ul&gt;</span>
+<span class="source-line-no">052</span><span id="line-52"> * &lt;li&gt;version 
ranges,&lt;/li&gt;</span>
+<span class="source-line-no">053</span><span id="line-53"> * &lt;li&gt;the 
special placeholders {@code LATEST} or {@code RELEASE} or&lt;/li&gt;</span>
+<span class="source-line-no">054</span><span id="line-54"> * 
&lt;li&gt;versions ending with {@code -SNAPSHOT}.</span>
+<span class="source-line-no">055</span><span id="line-55"> * &lt;/ul&gt;</span>
+<span class="source-line-no">056</span><span id="line-56"> *</span>
+<span class="source-line-no">057</span><span id="line-57"> * @since 
3.2.0</span>
+<span class="source-line-no">058</span><span id="line-58"> */</span>
+<span class="source-line-no">059</span><span 
id="line-59">@Named("banDynamicVersions")</span>
+<span class="source-line-no">060</span><span id="line-60">public final class 
BanDynamicVersions extends AbstractStandardEnforcerRule {</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">    private static 
final String RELEASE = "RELEASE";</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64">    private static 
final String LATEST = "LATEST";</span>
+<span class="source-line-no">065</span><span id="line-65"></span>
+<span class="source-line-no">066</span><span id="line-66">    private static 
final String SNAPSHOT_SUFFIX = "-SNAPSHOT";</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">    /**</span>
+<span class="source-line-no">069</span><span id="line-69">     * {@code true} 
if versions ending with {@code -SNAPSHOT} should be allowed</span>
+<span class="source-line-no">070</span><span id="line-70">     */</span>
+<span class="source-line-no">071</span><span id="line-71">    private boolean 
allowSnapshots;</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">    /**</span>
+<span class="source-line-no">074</span><span id="line-74">     * {@code true} 
if versions using {@code LATEST} should be allowed</span>
+<span class="source-line-no">075</span><span id="line-75">     */</span>
+<span class="source-line-no">076</span><span id="line-76">    private boolean 
allowLatest;</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78">    /**</span>
+<span class="source-line-no">079</span><span id="line-79">     * {@code true} 
if versions using {@code RELEASE} should be allowed</span>
+<span class="source-line-no">080</span><span id="line-80">     */</span>
+<span class="source-line-no">081</span><span id="line-81">    private boolean 
allowRelease;</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">    /**</span>
+<span class="source-line-no">084</span><span id="line-84">     * {@code true} 
if version ranges should be allowed</span>
+<span class="source-line-no">085</span><span id="line-85">     */</span>
+<span class="source-line-no">086</span><span id="line-86">    private boolean 
allowRanges;</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">     * {@code true} 
if ranges having the same upper and lower bound like {@code [1.0]} should be 
allowed.</span>
+<span class="source-line-no">090</span><span id="line-90">     * Only 
applicable if {@link #allowRanges} is not set to {@code true}.</span>
+<span class="source-line-no">091</span><span id="line-91">     */</span>
+<span class="source-line-no">092</span><span id="line-92">    private boolean 
allowRangesWithIdenticalBounds;</span>
+<span class="source-line-no">093</span><span id="line-93"></span>
+<span class="source-line-no">094</span><span id="line-94">    /**</span>
+<span class="source-line-no">095</span><span id="line-95">     * {@code true} 
if optional dependencies should not be checked</span>
+<span class="source-line-no">096</span><span id="line-96">     */</span>
+<span class="source-line-no">097</span><span id="line-97">    private boolean 
excludeOptionals;</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">    /**</span>
+<span class="source-line-no">100</span><span id="line-100">     * the scopes 
of dependencies which should be excluded from this rule</span>
+<span class="source-line-no">101</span><span id="line-101">     */</span>
+<span class="source-line-no">102</span><span id="line-102">    private 
List&lt;String&gt; excludedScopes;</span>
+<span class="source-line-no">103</span><span id="line-103"></span>
+<span class="source-line-no">104</span><span id="line-104">    /**</span>
+<span class="source-line-no">105</span><span id="line-105">     * Specify the 
ignored dependencies. This can be a list of artifacts in the format</span>
+<span class="source-line-no">106</span><span id="line-106">     * 
&lt;code&gt;groupId[:artifactId[:version[:type[:scope:[classifier]]]]]&lt;/code&gt;.</span>
+<span class="source-line-no">107</span><span id="line-107">     * Any of the 
sections can be a wildcard by using '*' (e.g. {@code group:*:1.0}).</span>
+<span class="source-line-no">108</span><span id="line-108">     * 
&lt;br&gt;</span>
+<span class="source-line-no">109</span><span id="line-109">     * Any of the 
ignored dependencies may have dynamic versions.</span>
+<span class="source-line-no">110</span><span id="line-110">     */</span>
+<span class="source-line-no">111</span><span id="line-111">    private 
List&lt;String&gt; ignores = null;</span>
+<span class="source-line-no">112</span><span id="line-112"></span>
+<span class="source-line-no">113</span><span id="line-113">    private final 
ResolverUtil resolverUtil;</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115">    @Inject</span>
+<span class="source-line-no">116</span><span id="line-116">    public 
BanDynamicVersions(</span>
+<span class="source-line-no">117</span><span id="line-117">            
MavenProject project, RepositorySystem repoSystem, MavenSession mavenSession, 
ResolverUtil resolverUtil) {</span>
+<span class="source-line-no">118</span><span id="line-118">        
this.resolverUtil = Objects.requireNonNull(resolverUtil);</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">    private final 
class BannedDynamicVersionCollector implements DependencyVisitor {</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">        private 
final Deque&lt;DependencyNode&gt; nodeStack; // all intermediate nodes (without 
the root node)</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">        private 
boolean isRoot = true;</span>
+<span class="source-line-no">126</span><span id="line-126"></span>
+<span class="source-line-no">127</span><span id="line-127">        private 
List&lt;String&gt; violations;</span>
+<span class="source-line-no">128</span><span id="line-128"></span>
+<span class="source-line-no">129</span><span id="line-129">        private 
final Predicate&lt;DependencyNode&gt; predicate;</span>
+<span class="source-line-no">130</span><span id="line-130"></span>
+<span class="source-line-no">131</span><span id="line-131">        public 
List&lt;String&gt; getViolations() {</span>
+<span class="source-line-no">132</span><span id="line-132">            return 
violations;</span>
+<span class="source-line-no">133</span><span id="line-133">        }</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135">        
BannedDynamicVersionCollector(Predicate&lt;DependencyNode&gt; predicate) 
{</span>
+<span class="source-line-no">136</span><span id="line-136">            
this.nodeStack = new ArrayDeque&lt;&gt;();</span>
+<span class="source-line-no">137</span><span id="line-137">            
this.predicate = predicate;</span>
+<span class="source-line-no">138</span><span id="line-138">            
this.isRoot = true;</span>
+<span class="source-line-no">139</span><span id="line-139">            
this.violations = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">140</span><span id="line-140">        }</span>
+<span class="source-line-no">141</span><span id="line-141"></span>
+<span class="source-line-no">142</span><span id="line-142">        private 
boolean isBannedDynamicVersion(VersionConstraint versionConstraint) {</span>
+<span class="source-line-no">143</span><span id="line-143">            if 
(versionConstraint.getVersion() != null) {</span>
+<span class="source-line-no">144</span><span id="line-144">                if 
(versionConstraint.getVersion().toString().equals(LATEST)) {</span>
+<span class="source-line-no">145</span><span id="line-145">                    
return !allowLatest;</span>
+<span class="source-line-no">146</span><span id="line-146">                } 
else if (versionConstraint.getVersion().toString().equals(RELEASE)) {</span>
+<span class="source-line-no">147</span><span id="line-147">                    
return !allowRelease;</span>
+<span class="source-line-no">148</span><span id="line-148">                } 
else if (versionConstraint.getVersion().toString().endsWith(SNAPSHOT_SUFFIX)) 
{</span>
+<span class="source-line-no">149</span><span id="line-149">                    
return !allowSnapshots;</span>
+<span class="source-line-no">150</span><span id="line-150">                
}</span>
+<span class="source-line-no">151</span><span id="line-151">            } else 
if (versionConstraint.getRange() != null) {</span>
+<span class="source-line-no">152</span><span id="line-152">                if 
(allowRangesWithIdenticalBounds</span>
+<span class="source-line-no">153</span><span id="line-153">                    
    &amp;&amp; Objects.equals(</span>
+<span class="source-line-no">154</span><span id="line-154">                    
            versionConstraint.getRange().getLowerBound(),</span>
+<span class="source-line-no">155</span><span id="line-155">                    
            versionConstraint.getRange().getUpperBound())) {</span>
+<span class="source-line-no">156</span><span id="line-156">                    
return false;</span>
+<span class="source-line-no">157</span><span id="line-157">                
}</span>
+<span class="source-line-no">158</span><span id="line-158">                
return !allowRanges;</span>
+<span class="source-line-no">159</span><span id="line-159">            } else 
{</span>
+<span class="source-line-no">160</span><span id="line-160">                
getLog().warn("Unexpected version constraint found: " + 
versionConstraint);</span>
+<span class="source-line-no">161</span><span id="line-161">            }</span>
+<span class="source-line-no">162</span><span id="line-162">            return 
false;</span>
+<span class="source-line-no">163</span><span id="line-163">        }</span>
+<span class="source-line-no">164</span><span id="line-164"></span>
+<span class="source-line-no">165</span><span id="line-165">        
@Override</span>
+<span class="source-line-no">166</span><span id="line-166">        public 
boolean visitEnter(DependencyNode node) {</span>
+<span class="source-line-no">167</span><span id="line-167">            if 
(isRoot) {</span>
+<span class="source-line-no">168</span><span id="line-168">                
isRoot = false;</span>
+<span class="source-line-no">169</span><span id="line-169">            } else 
{</span>
+<span class="source-line-no">170</span><span id="line-170">                
getLog().debug("Found node " + node + " with version constraint " + 
node.getVersionConstraint());</span>
+<span class="source-line-no">171</span><span id="line-171">                if 
(predicate.test(node) &amp;&amp; 
isBannedDynamicVersion(node.getVersionConstraint())) {</span>
+<span class="source-line-no">172</span><span id="line-172">                    
violations.add("Dependency "</span>
+<span class="source-line-no">173</span><span id="line-173">                    
        + node.getDependency()</span>
+<span class="source-line-no">174</span><span id="line-174">                    
        + dumpIntermediatePath(nodeStack)</span>
+<span class="source-line-no">175</span><span id="line-175">                    
        + " is referenced with a banned dynamic version "</span>
+<span class="source-line-no">176</span><span id="line-176">                    
        + node.getVersionConstraint());</span>
+<span class="source-line-no">177</span><span id="line-177">                    
return false;</span>
+<span class="source-line-no">178</span><span id="line-178">                
}</span>
+<span class="source-line-no">179</span><span id="line-179">                
nodeStack.addLast(node);</span>
+<span class="source-line-no">180</span><span id="line-180">            }</span>
+<span class="source-line-no">181</span><span id="line-181">            return 
true;</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">        
@Override</span>
+<span class="source-line-no">185</span><span id="line-185">        public 
boolean visitLeave(DependencyNode node) {</span>
+<span class="source-line-no">186</span><span id="line-186">            if 
(!nodeStack.isEmpty()) {</span>
+<span class="source-line-no">187</span><span id="line-187">                
nodeStack.removeLast();</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 
true;</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"></span>
+<span class="source-line-no">193</span><span id="line-193">    @Override</span>
+<span class="source-line-no">194</span><span id="line-194">    public void 
execute() throws EnforcerRuleException {</span>
+<span class="source-line-no">195</span><span id="line-195"></span>
+<span class="source-line-no">196</span><span id="line-196">        try {</span>
+<span class="source-line-no">197</span><span id="line-197">            
DependencyNode rootDependency =</span>
+<span class="source-line-no">198</span><span id="line-198">                    
resolverUtil.resolveTransitiveDependencies(excludeOptionals, 
excludedScopes);</span>
+<span class="source-line-no">199</span><span id="line-199"></span>
+<span class="source-line-no">200</span><span id="line-200">            
List&lt;String&gt; violations = 
collectDependenciesWithBannedDynamicVersions(rootDependency);</span>
+<span class="source-line-no">201</span><span id="line-201">            if 
(!violations.isEmpty()) {</span>
+<span class="source-line-no">202</span><span id="line-202">                
ChoiceFormat dependenciesFormat = new 
ChoiceFormat("1#dependency|1&lt;dependencies");</span>
+<span class="source-line-no">203</span><span id="line-203">                
throw new EnforcerRuleException("Found " + violations.size() + " "</span>
+<span class="source-line-no">204</span><span id="line-204">                    
    + dependenciesFormat.format(violations.size())</span>
+<span class="source-line-no">205</span><span id="line-205">                    
    + " with dynamic versions." + System.lineSeparator()</span>
+<span class="source-line-no">206</span><span id="line-206">                    
    + String.join(System.lineSeparator(), violations));</span>
+<span class="source-line-no">207</span><span id="line-207">            }</span>
+<span class="source-line-no">208</span><span id="line-208">        } catch 
(DependencyCollectionException e) {</span>
+<span class="source-line-no">209</span><span id="line-209">            throw 
new EnforcerRuleException("Could not retrieve dependency metadata for project", 
e);</span>
+<span class="source-line-no">210</span><span id="line-210">        }</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">    private static 
String dumpIntermediatePath(Collection&lt;DependencyNode&gt; path) {</span>
+<span class="source-line-no">214</span><span id="line-214">        if 
(path.isEmpty()) {</span>
+<span class="source-line-no">215</span><span id="line-215">            return 
"";</span>
+<span class="source-line-no">216</span><span id="line-216">        }</span>
+<span class="source-line-no">217</span><span id="line-217">        return " 
via " + path.stream().map(n -&gt; 
n.getArtifact().toString()).collect(Collectors.joining(" -&gt; "));</span>
+<span class="source-line-no">218</span><span id="line-218">    }</span>
+<span class="source-line-no">219</span><span id="line-219"></span>
+<span class="source-line-no">220</span><span id="line-220">    private static 
final class ExcludeArtifactPatternsPredicate implements 
Predicate&lt;DependencyNode&gt; {</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222">        private 
final ArtifactMatcher artifactMatcher;</span>
+<span class="source-line-no">223</span><span id="line-223"></span>
+<span class="source-line-no">224</span><span id="line-224">        
ExcludeArtifactPatternsPredicate(List&lt;String&gt; excludes) {</span>
+<span class="source-line-no">225</span><span id="line-225">            
this.artifactMatcher = new ArtifactMatcher(excludes, 
Collections.emptyList());</span>
+<span class="source-line-no">226</span><span id="line-226">        }</span>
+<span class="source-line-no">227</span><span id="line-227"></span>
+<span class="source-line-no">228</span><span id="line-228">        
@Override</span>
+<span class="source-line-no">229</span><span id="line-229">        public 
boolean test(DependencyNode depNode) {</span>
+<span class="source-line-no">230</span><span id="line-230">            return 
artifactMatcher.match(ArtifactUtils.toArtifact(depNode));</span>
+<span class="source-line-no">231</span><span id="line-231">        }</span>
+<span class="source-line-no">232</span><span id="line-232">    }</span>
+<span class="source-line-no">233</span><span id="line-233"></span>
+<span class="source-line-no">234</span><span id="line-234">    private 
List&lt;String&gt; collectDependenciesWithBannedDynamicVersions(DependencyNode 
rootDependency)</span>
+<span class="source-line-no">235</span><span id="line-235">            throws 
DependencyCollectionException {</span>
+<span class="source-line-no">236</span><span id="line-236">        
Predicate&lt;DependencyNode&gt; predicate;</span>
+<span class="source-line-no">237</span><span id="line-237">        if (ignores 
!= null &amp;&amp; !ignores.isEmpty()) {</span>
+<span class="source-line-no">238</span><span id="line-238">            
predicate = new ExcludeArtifactPatternsPredicate(ignores);</span>
+<span class="source-line-no">239</span><span id="line-239">        } else 
{</span>
+<span class="source-line-no">240</span><span id="line-240">            
predicate = d -&gt; true;</span>
+<span class="source-line-no">241</span><span id="line-241">        }</span>
+<span class="source-line-no">242</span><span id="line-242">        
BannedDynamicVersionCollector bannedDynamicVersionCollector = new 
BannedDynamicVersionCollector(predicate);</span>
+<span class="source-line-no">243</span><span id="line-243">        
DependencyVisitor depVisitor = new 
TreeDependencyVisitor(bannedDynamicVersionCollector);</span>
+<span class="source-line-no">244</span><span id="line-244">        
rootDependency.accept(depVisitor);</span>
+<span class="source-line-no">245</span><span id="line-245">        return 
bannedDynamicVersionCollector.getViolations();</span>
+<span class="source-line-no">246</span><span id="line-246">    }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248">    @Override</span>
+<span class="source-line-no">249</span><span id="line-249">    public String 
toString() {</span>
+<span class="source-line-no">250</span><span id="line-250">        return 
String.format(</span>
+<span class="source-line-no">251</span><span id="line-251">                
"BanDynamicVersions[allowSnapshots=%b, allowLatest=%b, allowRelease=%b, 
allowRanges=%b, allowRangesWithIdenticalBounds=%b, excludeOptionals=%b, 
excludedScopes=%s, ignores=%s]",</span>
+<span class="source-line-no">252</span><span id="line-252">                
allowSnapshots,</span>
+<span class="source-line-no">253</span><span id="line-253">                
allowLatest,</span>
+<span class="source-line-no">254</span><span id="line-254">                
allowRelease,</span>
+<span class="source-line-no">255</span><span id="line-255">                
allowRanges,</span>
+<span class="source-line-no">256</span><span id="line-256">                
allowRangesWithIdenticalBounds,</span>
+<span class="source-line-no">257</span><span id="line-257">                
excludeOptionals,</span>
+<span class="source-line-no">258</span><span id="line-258">                
excludedScopes,</span>
+<span class="source-line-no">259</span><span id="line-259">                
ignores);</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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Propchange: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanDynamicVersions.html
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BanTransitiveDependencies.html
 Sat Apr  1 21:10:25 2023
@@ -81,12 +81,12 @@
 <span class="source-line-no">068</span><span id="line-68"></span>
 <span class="source-line-no">069</span><span id="line-69">    private final 
MavenSession session;</span>
 <span class="source-line-no">070</span><span id="line-70"></span>
-<span class="source-line-no">071</span><span id="line-71">    private final 
ResolveUtil resolveUtil;</span>
+<span class="source-line-no">071</span><span id="line-71">    private final 
ResolverUtil resolverUtil;</span>
 <span class="source-line-no">072</span><span id="line-72"></span>
 <span class="source-line-no">073</span><span id="line-73">    @Inject</span>
-<span class="source-line-no">074</span><span id="line-74">    public 
BanTransitiveDependencies(MavenSession session, ResolveUtil resolveUtil) 
{</span>
+<span class="source-line-no">074</span><span id="line-74">    public 
BanTransitiveDependencies(MavenSession session, ResolverUtil resolverUtil) 
{</span>
 <span class="source-line-no">075</span><span id="line-75">        this.session 
= Objects.requireNonNull(session);</span>
-<span class="source-line-no">076</span><span id="line-76">        
this.resolveUtil = Objects.requireNonNull(resolveUtil);</span>
+<span class="source-line-no">076</span><span id="line-76">        
this.resolverUtil = Objects.requireNonNull(resolverUtil);</span>
 <span class="source-line-no">077</span><span id="line-77">    }</span>
 <span class="source-line-no">078</span><span id="line-78"></span>
 <span class="source-line-no">079</span><span id="line-79">    /**</span>
@@ -160,7 +160,7 @@
 <span class="source-line-no">147</span><span id="line-147">                
.map(d -&gt; RepositoryUtils.toDependency(d, artifactTypeRegistry))</span>
 <span class="source-line-no">148</span><span id="line-148">                
.collect(Collectors.toSet());</span>
 <span class="source-line-no">149</span><span id="line-149"></span>
-<span class="source-line-no">150</span><span id="line-150">        
DependencyNode rootNode = resolveUtil.resolveTransitiveDependencies();</span>
+<span class="source-line-no">150</span><span id="line-150">        
DependencyNode rootNode = resolverUtil.resolveTransitiveDependencies();</span>
 <span class="source-line-no">151</span><span id="line-151">        
StringBuilder generatedMessage = new StringBuilder();</span>
 <span class="source-line-no">152</span><span id="line-152">        if 
(searchTree(rootNode, 0, exclusions, directDependencies, generatedMessage)) 
{</span>
 <span class="source-line-no">153</span><span id="line-153">            throw 
new 
EnforcerRuleException(ofNullable(getMessage()).orElse(generatedMessage.toString()));</span>

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BannedDependencies.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BannedDependencies.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/BannedDependencies.html
 Sat Apr  1 21:10:25 2023
@@ -47,8 +47,8 @@
 <span class="source-line-no">034</span><span id="line-34">public final class 
BannedDependencies extends BannedDependenciesBase {</span>
 <span class="source-line-no">035</span><span id="line-35"></span>
 <span class="source-line-no">036</span><span id="line-36">    @Inject</span>
-<span class="source-line-no">037</span><span id="line-37">    
BannedDependencies(MavenSession session, ResolveUtil resolveUtil) {</span>
-<span class="source-line-no">038</span><span id="line-38">        
super(session, resolveUtil);</span>
+<span class="source-line-no">037</span><span id="line-37">    
BannedDependencies(MavenSession session, ResolverUtil resolverUtil) {</span>
+<span class="source-line-no">038</span><span id="line-38">        
super(session, resolverUtil);</span>
 <span class="source-line-no">039</span><span id="line-39">    }</span>
 <span class="source-line-no">040</span><span id="line-40"></span>
 <span class="source-line-no">041</span><span id="line-41">    @Override</span>

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/DependencyConvergence.html
 Sat Apr  1 21:10:25 2023
@@ -35,130 +35,112 @@
 <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.List;</span>
-<span class="source-line-no">027</span><span id="line-27">import 
java.util.Objects;</span>
-<span class="source-line-no">028</span><span id="line-28"></span>
-<span class="source-line-no">029</span><span id="line-29">import 
org.apache.maven.enforcer.rule.api.EnforcerRuleException;</span>
-<span class="source-line-no">030</span><span id="line-30">import 
org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;</span>
-<span class="source-line-no">031</span><span id="line-31">import 
org.apache.maven.enforcer.rules.utils.ArtifactUtils;</span>
-<span class="source-line-no">032</span><span id="line-32">import 
org.eclipse.aether.collection.DependencyCollectionContext;</span>
-<span class="source-line-no">033</span><span id="line-33">import 
org.eclipse.aether.collection.DependencySelector;</span>
-<span class="source-line-no">034</span><span id="line-34">import 
org.eclipse.aether.graph.Dependency;</span>
-<span class="source-line-no">035</span><span id="line-35">import 
org.eclipse.aether.graph.DependencyNode;</span>
-<span class="source-line-no">036</span><span id="line-36">import 
org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;</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.List;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
java.util.Objects;</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">import 
org.apache.maven.enforcer.rule.api.EnforcerRuleException;</span>
+<span class="source-line-no">031</span><span id="line-31">import 
org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;</span>
+<span class="source-line-no">032</span><span id="line-32">import 
org.apache.maven.enforcer.rules.utils.ArtifactUtils;</span>
+<span class="source-line-no">033</span><span id="line-33">import 
org.eclipse.aether.graph.DependencyNode;</span>
+<span class="source-line-no">034</span><span id="line-34"></span>
+<span class="source-line-no">035</span><span id="line-35">import static 
org.apache.maven.artifact.Artifact.SCOPE_PROVIDED;</span>
+<span class="source-line-no">036</span><span id="line-36">import static 
org.apache.maven.artifact.Artifact.SCOPE_TEST;</span>
 <span class="source-line-no">037</span><span id="line-37"></span>
-<span class="source-line-no">038</span><span id="line-38">import static 
org.apache.maven.artifact.Artifact.SCOPE_PROVIDED;</span>
-<span class="source-line-no">039</span><span id="line-39">import static 
org.apache.maven.artifact.Artifact.SCOPE_TEST;</span>
-<span class="source-line-no">040</span><span id="line-40"></span>
-<span class="source-line-no">041</span><span id="line-41">/**</span>
-<span class="source-line-no">042</span><span id="line-42"> * @author &lt;a 
href="mailto:[email protected]"&gt;Rex Hoffman&lt;/a&gt;</span>
-<span class="source-line-no">043</span><span id="line-43"> */</span>
-<span class="source-line-no">044</span><span 
id="line-44">@Named("dependencyConvergence")</span>
-<span class="source-line-no">045</span><span id="line-45">public final class 
DependencyConvergence extends AbstractStandardEnforcerRule {</span>
-<span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">    private boolean 
uniqueVersions;</span>
-<span class="source-line-no">048</span><span id="line-48"></span>
-<span class="source-line-no">049</span><span id="line-49">    private 
List&lt;String&gt; includes;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">    private 
List&lt;String&gt; excludes;</span>
-<span class="source-line-no">052</span><span id="line-52"></span>
-<span class="source-line-no">053</span><span id="line-53">    private 
DependencyVersionMap dependencyVersionMap;</span>
-<span class="source-line-no">054</span><span id="line-54"></span>
-<span class="source-line-no">055</span><span id="line-55">    private final 
ResolveUtil resolveUtil;</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">    @Inject</span>
-<span class="source-line-no">058</span><span id="line-58">    public 
DependencyConvergence(ResolveUtil resolveUtil) {</span>
-<span class="source-line-no">059</span><span id="line-59">        
this.resolveUtil = Objects.requireNonNull(resolveUtil);</span>
-<span class="source-line-no">060</span><span id="line-60">    }</span>
-<span class="source-line-no">061</span><span id="line-61"></span>
-<span class="source-line-no">062</span><span id="line-62">    @Override</span>
-<span class="source-line-no">063</span><span id="line-63">    public void 
execute() throws EnforcerRuleException {</span>
+<span class="source-line-no">038</span><span id="line-38">/**</span>
+<span class="source-line-no">039</span><span id="line-39"> * @author &lt;a 
href="mailto:[email protected]"&gt;Rex Hoffman&lt;/a&gt;</span>
+<span class="source-line-no">040</span><span id="line-40"> */</span>
+<span class="source-line-no">041</span><span 
id="line-41">@Named("dependencyConvergence")</span>
+<span class="source-line-no">042</span><span id="line-42">public final class 
DependencyConvergence extends AbstractStandardEnforcerRule {</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">    // 
parameters</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">    private boolean 
uniqueVersions;</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">    private 
List&lt;String&gt; includes;</span>
+<span class="source-line-no">049</span><span id="line-49"></span>
+<span class="source-line-no">050</span><span id="line-50">    private 
List&lt;String&gt; excludes;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">    private 
List&lt;String&gt; excludedScopes = Arrays.asList(SCOPE_TEST, 
SCOPE_PROVIDED);</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">    // parameters - 
end</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 
DependencyVersionMap dependencyVersionMap;</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">    private final 
ResolverUtil resolverUtil;</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">    @Inject</span>
+<span class="source-line-no">061</span><span id="line-61">    public 
DependencyConvergence(ResolverUtil resolverUtil) {</span>
+<span class="source-line-no">062</span><span id="line-62">        
this.resolverUtil = Objects.requireNonNull(resolverUtil);</span>
+<span class="source-line-no">063</span><span id="line-63">    }</span>
 <span class="source-line-no">064</span><span id="line-64"></span>
-<span class="source-line-no">065</span><span id="line-65">        
DependencyNode node = resolveUtil.resolveTransitiveDependencies(</span>
-<span class="source-line-no">066</span><span id="line-66">                // 
TODO: use a modified version of ExclusionDependencySelector to process excludes 
and includes</span>
-<span class="source-line-no">067</span><span id="line-67">                new 
DependencySelector() {</span>
-<span class="source-line-no">068</span><span id="line-68">                    
@Override</span>
-<span class="source-line-no">069</span><span id="line-69">                    
public boolean selectDependency(Dependency dependency) {</span>
-<span class="source-line-no">070</span><span id="line-70">                     
   // regular OptionalDependencySelector only discriminates optional 
dependencies at level 2+</span>
-<span class="source-line-no">071</span><span id="line-71">                     
   return !dependency.isOptional()</span>
-<span class="source-line-no">072</span><span id="line-72">                     
           // regular scope selectors only discard transitive 
dependencies</span>
-<span class="source-line-no">073</span><span id="line-73">                     
           // and always allow direct dependencies</span>
-<span class="source-line-no">074</span><span id="line-74">                     
           &amp;&amp; !dependency.getScope().equals(SCOPE_TEST)</span>
-<span class="source-line-no">075</span><span id="line-75">                     
           &amp;&amp; !dependency.getScope().equals(SCOPE_PROVIDED);</span>
-<span class="source-line-no">076</span><span id="line-76">                    
}</span>
-<span class="source-line-no">077</span><span id="line-77"></span>
-<span class="source-line-no">078</span><span id="line-78">                    
@Override</span>
-<span class="source-line-no">079</span><span id="line-79">                    
public DependencySelector deriveChildSelector(DependencyCollectionContext 
context) {</span>
-<span class="source-line-no">080</span><span id="line-80">                     
   return this;</span>
-<span class="source-line-no">081</span><span id="line-81">                    
}</span>
-<span class="source-line-no">082</span><span id="line-82">                
},</span>
-<span class="source-line-no">083</span><span id="line-83">                // 
process dependency exclusions</span>
-<span class="source-line-no">084</span><span id="line-84">                new 
ExclusionDependencySelector());</span>
-<span class="source-line-no">085</span><span id="line-85">        
dependencyVersionMap = new 
DependencyVersionMap().setUniqueVersions(uniqueVersions);</span>
-<span class="source-line-no">086</span><span id="line-86">        
node.accept(dependencyVersionMap);</span>
-<span class="source-line-no">087</span><span id="line-87"></span>
-<span class="source-line-no">088</span><span id="line-88">        
List&lt;CharSequence&gt; errorMsgs = new ArrayList&lt;&gt;(</span>
-<span class="source-line-no">089</span><span id="line-89">                
getConvergenceErrorMsgs(dependencyVersionMap.getConflictedVersionNumbers(includes,
 excludes)));</span>
-<span class="source-line-no">090</span><span id="line-90">        for 
(CharSequence errorMsg : errorMsgs) {</span>
-<span class="source-line-no">091</span><span id="line-91">            
getLog().warnOrError(errorMsg);</span>
-<span class="source-line-no">092</span><span id="line-92">        }</span>
-<span class="source-line-no">093</span><span id="line-93">        if 
(errorMsgs.size() &gt; 0) {</span>
-<span class="source-line-no">094</span><span id="line-94">            throw 
new EnforcerRuleException(</span>
-<span class="source-line-no">095</span><span id="line-95">                    
"Failed while enforcing releasability. " + "See above detailed error 
message.");</span>
+<span class="source-line-no">065</span><span id="line-65">    @Override</span>
+<span class="source-line-no">066</span><span id="line-66">    public void 
execute() throws EnforcerRuleException {</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">        
DependencyNode node = 
resolverUtil.resolveTransitiveDependenciesVerbose(excludedScopes);</span>
+<span class="source-line-no">069</span><span id="line-69">        
dependencyVersionMap = new 
DependencyVersionMap().setUniqueVersions(uniqueVersions);</span>
+<span class="source-line-no">070</span><span id="line-70">        
node.accept(dependencyVersionMap);</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">        
List&lt;String&gt; errorMsgs =</span>
+<span class="source-line-no">073</span><span id="line-73">                
getConvergenceErrorMsgs(dependencyVersionMap.getConflictedVersionNumbers(includes,
 excludes));</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">        if 
(!errorMsgs.isEmpty()) {</span>
+<span class="source-line-no">076</span><span id="line-76">            throw 
new EnforcerRuleException("Failed while enforcing releasability." + 
System.lineSeparator()</span>
+<span class="source-line-no">077</span><span id="line-77">                    
+ String.join(System.lineSeparator(), errorMsgs));</span>
+<span class="source-line-no">078</span><span id="line-78">        }</span>
+<span class="source-line-no">079</span><span id="line-79">    }</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">    private 
StringBuilder buildTreeString(DependencyNode node) {</span>
+<span class="source-line-no">082</span><span id="line-82">        
List&lt;String&gt; loc = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">083</span><span id="line-83">        
DependencyNode currentNode = node;</span>
+<span class="source-line-no">084</span><span id="line-84">        while 
(currentNode != null) {</span>
+<span class="source-line-no">085</span><span id="line-85">            // 
ArtifactUtils.toArtifact(node) adds scope and optional information, if 
present</span>
+<span class="source-line-no">086</span><span id="line-86">            
loc.add(ArtifactUtils.toArtifact(currentNode).toString());</span>
+<span class="source-line-no">087</span><span id="line-87">            
currentNode = dependencyVersionMap.getParent(currentNode);</span>
+<span class="source-line-no">088</span><span id="line-88">        }</span>
+<span class="source-line-no">089</span><span id="line-89">        
Collections.reverse(loc);</span>
+<span class="source-line-no">090</span><span id="line-90">        
StringBuilder builder = new StringBuilder();</span>
+<span class="source-line-no">091</span><span id="line-91">        for (int i = 
0; i &lt; loc.size(); i++) {</span>
+<span class="source-line-no">092</span><span id="line-92">            for (int 
j = 0; j &lt; i; j++) {</span>
+<span class="source-line-no">093</span><span id="line-93">                
builder.append("  ");</span>
+<span class="source-line-no">094</span><span id="line-94">            }</span>
+<span class="source-line-no">095</span><span id="line-95">            
builder.append("+-").append(loc.get(i)).append(System.lineSeparator());</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"></span>
-<span class="source-line-no">099</span><span id="line-99">    private 
StringBuilder buildTreeString(DependencyNode node) {</span>
-<span class="source-line-no">100</span><span id="line-100">        
List&lt;String&gt; loc = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">101</span><span id="line-101">        
DependencyNode currentNode = node;</span>
-<span class="source-line-no">102</span><span id="line-102">        while 
(currentNode != null) {</span>
-<span class="source-line-no">103</span><span id="line-103">            // 
ArtifactUtils.toArtifact(node) adds scope and optional information, if 
present</span>
-<span class="source-line-no">104</span><span id="line-104">            
loc.add(ArtifactUtils.toArtifact(currentNode).toString());</span>
-<span class="source-line-no">105</span><span id="line-105">            
currentNode = dependencyVersionMap.getParent(currentNode);</span>
-<span class="source-line-no">106</span><span id="line-106">        }</span>
-<span class="source-line-no">107</span><span id="line-107">        
Collections.reverse(loc);</span>
-<span class="source-line-no">108</span><span id="line-108">        
StringBuilder builder = new StringBuilder();</span>
-<span class="source-line-no">109</span><span id="line-109">        for (int i 
= 0; i &lt; loc.size(); i++) {</span>
-<span class="source-line-no">110</span><span id="line-110">            for 
(int j = 0; j &lt; i; j++) {</span>
-<span class="source-line-no">111</span><span id="line-111">                
builder.append("  ");</span>
-<span class="source-line-no">112</span><span id="line-112">            }</span>
-<span class="source-line-no">113</span><span id="line-113">            
builder.append("+-").append(loc.get(i)).append(System.lineSeparator());</span>
-<span class="source-line-no">114</span><span id="line-114">        }</span>
-<span class="source-line-no">115</span><span id="line-115">        return 
builder;</span>
-<span class="source-line-no">116</span><span id="line-116">    }</span>
-<span class="source-line-no">117</span><span id="line-117"></span>
-<span class="source-line-no">118</span><span id="line-118">    private 
List&lt;String&gt; 
getConvergenceErrorMsgs(List&lt;List&lt;DependencyNode&gt;&gt; errors) {</span>
-<span class="source-line-no">119</span><span id="line-119">        
List&lt;String&gt; errorMsgs = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">120</span><span id="line-120">        for 
(List&lt;DependencyNode&gt; nodeList : errors) {</span>
-<span class="source-line-no">121</span><span id="line-121">            
errorMsgs.add(buildConvergenceErrorMsg(nodeList));</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 
errorMsgs;</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 
buildConvergenceErrorMsg(List&lt;DependencyNode&gt; nodeList) {</span>
-<span class="source-line-no">127</span><span id="line-127">        
StringBuilder builder = new StringBuilder();</span>
-<span class="source-line-no">128</span><span id="line-128">        
builder.append(System.lineSeparator())</span>
-<span class="source-line-no">129</span><span id="line-129">                
.append("Dependency convergence error for ")</span>
-<span class="source-line-no">130</span><span id="line-130">                
.append(nodeList.get(0).getArtifact().toString())</span>
-<span class="source-line-no">131</span><span id="line-131">                
.append(" paths to dependency are:")</span>
-<span class="source-line-no">132</span><span id="line-132">                
.append(System.lineSeparator());</span>
-<span class="source-line-no">133</span><span id="line-133">        if 
(nodeList.size() &gt; 0) {</span>
-<span class="source-line-no">134</span><span id="line-134">            
builder.append(buildTreeString(nodeList.get(0)));</span>
-<span class="source-line-no">135</span><span id="line-135">        }</span>
-<span class="source-line-no">136</span><span id="line-136">        for 
(DependencyNode node : nodeList.subList(1, nodeList.size())) {</span>
-<span class="source-line-no">137</span><span id="line-137">            
builder.append("and").append(System.lineSeparator()).append(buildTreeString(node));</span>
-<span class="source-line-no">138</span><span id="line-138">        }</span>
-<span class="source-line-no">139</span><span id="line-139">        return 
builder.toString();</span>
-<span class="source-line-no">140</span><span id="line-140">    }</span>
-<span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">    @Override</span>
-<span class="source-line-no">143</span><span id="line-143">    public String 
toString() {</span>
-<span class="source-line-no">144</span><span id="line-144">        return 
String.format(</span>
-<span class="source-line-no">145</span><span id="line-145">                
"DependencyConvergence[includes=%s, excludes=%s, uniqueVersions=%b]",</span>
-<span class="source-line-no">146</span><span id="line-146">                
includes, excludes, uniqueVersions);</span>
-<span class="source-line-no">147</span><span id="line-147">    }</span>
-<span class="source-line-no">148</span><span id="line-148">}</span>
+<span class="source-line-no">097</span><span id="line-97">        return 
builder;</span>
+<span class="source-line-no">098</span><span id="line-98">    }</span>
+<span class="source-line-no">099</span><span id="line-99"></span>
+<span class="source-line-no">100</span><span id="line-100">    private 
List&lt;String&gt; 
getConvergenceErrorMsgs(List&lt;List&lt;DependencyNode&gt;&gt; errors) {</span>
+<span class="source-line-no">101</span><span id="line-101">        
List&lt;String&gt; errorMsgs = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">102</span><span id="line-102">        for 
(List&lt;DependencyNode&gt; nodeList : errors) {</span>
+<span class="source-line-no">103</span><span id="line-103">            
errorMsgs.add(buildConvergenceErrorMsg(nodeList));</span>
+<span class="source-line-no">104</span><span id="line-104">        }</span>
+<span class="source-line-no">105</span><span id="line-105">        return 
errorMsgs;</span>
+<span class="source-line-no">106</span><span id="line-106">    }</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108">    private String 
buildConvergenceErrorMsg(List&lt;DependencyNode&gt; nodeList) {</span>
+<span class="source-line-no">109</span><span id="line-109">        
StringBuilder builder = new StringBuilder();</span>
+<span class="source-line-no">110</span><span id="line-110">        
builder.append(System.lineSeparator())</span>
+<span class="source-line-no">111</span><span id="line-111">                
.append("Dependency convergence error for ")</span>
+<span class="source-line-no">112</span><span id="line-112">                
.append(nodeList.get(0).getArtifact().toString())</span>
+<span class="source-line-no">113</span><span id="line-113">                
.append(" paths to dependency are:")</span>
+<span class="source-line-no">114</span><span id="line-114">                
.append(System.lineSeparator());</span>
+<span class="source-line-no">115</span><span id="line-115">        if 
(nodeList.size() &gt; 0) {</span>
+<span class="source-line-no">116</span><span id="line-116">            
builder.append(buildTreeString(nodeList.get(0)));</span>
+<span class="source-line-no">117</span><span id="line-117">        }</span>
+<span class="source-line-no">118</span><span id="line-118">        for 
(DependencyNode node : nodeList.subList(1, nodeList.size())) {</span>
+<span class="source-line-no">119</span><span id="line-119">            
builder.append("and").append(System.lineSeparator()).append(buildTreeString(node));</span>
+<span class="source-line-no">120</span><span id="line-120">        }</span>
+<span class="source-line-no">121</span><span id="line-121">        return 
builder.toString();</span>
+<span class="source-line-no">122</span><span id="line-122">    }</span>
+<span class="source-line-no">123</span><span id="line-123"></span>
+<span class="source-line-no">124</span><span id="line-124">    @Override</span>
+<span class="source-line-no">125</span><span id="line-125">    public String 
toString() {</span>
+<span class="source-line-no">126</span><span id="line-126">        return 
String.format(</span>
+<span class="source-line-no">127</span><span id="line-127">                
"DependencyConvergence[includes=%s, excludes=%s, uniqueVersions=%b]",</span>
+<span class="source-line-no">128</span><span id="line-128">                
includes, excludes, uniqueVersions);</span>
+<span class="source-line-no">129</span><span id="line-129">    }</span>
+<span class="source-line-no">130</span><span id="line-130">}</span>
 
 
 

Modified: 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.html
==============================================================================
--- 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.html
 (original)
+++ 
maven/website/components/enforcer-archives/enforcer-LATEST/enforcer-rules/apidocs/src-html/org/apache/maven/enforcer/rules/dependency/RequireReleaseDeps.html
 Sat Apr  1 21:10:25 2023
@@ -64,8 +64,8 @@
 <span class="source-line-no">051</span><span id="line-51">    private boolean 
failWhenParentIsSnapshot = true;</span>
 <span class="source-line-no">052</span><span id="line-52"></span>
 <span class="source-line-no">053</span><span id="line-53">    @Inject</span>
-<span class="source-line-no">054</span><span id="line-54">    public 
RequireReleaseDeps(MavenSession session, ResolveUtil resolveUtil) {</span>
-<span class="source-line-no">055</span><span id="line-55">        
super(session, resolveUtil);</span>
+<span class="source-line-no">054</span><span id="line-54">    public 
RequireReleaseDeps(MavenSession session, ResolverUtil resolverUtil) {</span>
+<span class="source-line-no">055</span><span id="line-55">        
super(session, resolverUtil);</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">    // Override 
parent to allow optional ignore of this rule.</span>


Reply via email to