1
- package org .apache . maven . plugins .enforcer ;
1
+ package org .codehaus . mojo . versions .enforcer ;
2
2
/*
3
3
* Licensed to the Apache Software Foundation (ASF) under one
4
4
* or more contributor license agreements. See the NOTICE file
18
18
* under the License.
19
19
*/
20
20
21
+ import javax .inject .Inject ;
22
+ import javax .inject .Named ;
23
+
21
24
import java .util .Arrays ;
22
- import java .util .HashMap ;
23
25
import java .util .List ;
26
+ import java .util .Map ;
24
27
import java .util .Optional ;
25
28
import java .util .Set ;
26
29
import java .util .TreeSet ;
27
30
import java .util .stream .Collectors ;
28
31
29
32
import org .apache .maven .artifact .versioning .ArtifactVersion ;
30
- import org .apache .maven .enforcer .rule .api .EnforcerLevel ;
31
- import org .apache .maven .enforcer .rule .api .EnforcerRule ;
32
- import org .apache .maven .enforcer .rule .api .EnforcerRule2 ;
33
+ import org .apache .maven .enforcer .rule .api .AbstractEnforcerRule ;
34
+ import org .apache .maven .enforcer .rule .api .EnforcerRuleError ;
33
35
import org .apache .maven .enforcer .rule .api .EnforcerRuleException ;
34
- import org .apache .maven .enforcer .rule .api .EnforcerRuleHelper ;
35
36
import org .apache .maven .execution .MavenSession ;
36
37
import org .apache .maven .model .Dependency ;
37
38
import org .apache .maven .plugin .MojoExecution ;
46
47
import org .codehaus .mojo .versions .api .VersionsHelper ;
47
48
import org .codehaus .mojo .versions .model .RuleSet ;
48
49
import org .codehaus .mojo .versions .utils .DependencyComparator ;
49
- import org .codehaus .plexus .component .configurator .expression .ExpressionEvaluationException ;
50
- import org .codehaus .plexus .component .repository .exception .ComponentLookupException ;
51
50
52
51
import static java .util .Collections .emptyList ;
53
52
import static java .util .Collections .singletonList ;
62
61
import static org .codehaus .mojo .versions .utils .MavenProjectUtils .extractDependenciesFromPlugins ;
63
62
import static org .codehaus .mojo .versions .utils .MavenProjectUtils .extractPluginDependenciesFromPluginsInPluginManagement ;
64
63
65
- public class MaxDependencyUpdates implements EnforcerRule2 {
64
+ @ Named ("maxDependencyUpdates" )
65
+ public class MaxDependencyUpdates extends AbstractEnforcerRule {
66
66
/**
67
67
* Maximum allowed number of updates.
68
68
*
@@ -232,7 +232,7 @@ public class MaxDependencyUpdates implements EnforcerRule2 {
232
232
* version numbers. The URI could be either a Wagon URI or a classpath URI
233
233
* (e.g. <code>classpath:///package/sub/package/rules.xml</code>).
234
234
*
235
- * 2.14.0
235
+ * @since 2.14.0
236
236
*/
237
237
private String rulesUri ;
238
238
@@ -254,81 +254,78 @@ public class MaxDependencyUpdates implements EnforcerRule2 {
254
254
*/
255
255
protected boolean allowSnapshots ;
256
256
257
- /**
258
- * Retrieves the maven project from metadata
259
- * @param ruleHelper EnforcerRuleHelper object
260
- * @return maven project
261
- */
262
- private static MavenProject getMavenProject (EnforcerRuleHelper ruleHelper ) {
263
- try {
264
- return (MavenProject ) ruleHelper .evaluate ("${project}" );
265
- } catch (ExpressionEvaluationException e ) {
266
- throw new RuntimeException ("Cannot evaluate project metadata" , e );
267
- }
257
+ private final MavenProject project ;
258
+
259
+ private final RepositorySystem repositorySystem ;
260
+
261
+ private final org .eclipse .aether .RepositorySystem aetherRepositorySystem ;
262
+
263
+ private final Map <String , Wagon > wagonMap ;
264
+
265
+ private final MavenSession mavenSession ;
266
+
267
+ private final MojoExecution mojoExecution ;
268
+
269
+ @ Inject
270
+ public MaxDependencyUpdates (
271
+ MavenProject project ,
272
+ RepositorySystem repositorySystem ,
273
+ org .eclipse .aether .RepositorySystem aetherRepositorySystem ,
274
+ Map <String , Wagon > wagonMap ,
275
+ MavenSession mavenSession ,
276
+ MojoExecution mojoExecution ) {
277
+ this .project = project ;
278
+ this .repositorySystem = repositorySystem ;
279
+ this .aetherRepositorySystem = aetherRepositorySystem ;
280
+ this .wagonMap = wagonMap ;
281
+ this .mavenSession = mavenSession ;
282
+ this .mojoExecution = mojoExecution ;
268
283
}
269
284
270
285
/**
271
286
* Creates the VersionsHelper object
272
- * @param ruleHelper EnforcerRuleHelper object
273
287
* @return VersionsHelper object
274
288
*/
275
- @ SuppressWarnings ("unchecked" )
276
- private static VersionsHelper createVersionsHelper (
277
- EnforcerRuleHelper ruleHelper , String serverId , String rulesUri , RuleSet ruleSet ) {
289
+ private VersionsHelper createVersionsHelper (String serverId , String rulesUri , RuleSet ruleSet )
290
+ throws EnforcerRuleError {
278
291
try {
279
292
return new DefaultVersionsHelper .Builder ()
280
- .withRepositorySystem (ruleHelper .getComponent (RepositorySystem .class ))
281
- .withAetherRepositorySystem (ruleHelper .getComponent (org .eclipse .aether .RepositorySystem .class ))
282
- .withWagonMap (ruleHelper .getComponentMap (Wagon .class .getName ()).entrySet ().stream ()
283
- .filter (e -> e .getValue () instanceof Wagon )
284
- .collect (HashMap ::new , (m , e ) -> m .put (e .getKey (), (Wagon ) e .getValue ()), HashMap ::putAll ))
293
+ .withRepositorySystem (repositorySystem )
294
+ .withAetherRepositorySystem (aetherRepositorySystem )
295
+ .withWagonMap (wagonMap )
285
296
.withServerId (serverId )
286
297
.withRulesUri (rulesUri )
287
298
.withRuleSet (ruleSet )
288
299
.withIgnoredVersions (null )
289
- .withLog (ruleHelper . getLog ())
290
- .withMavenSession (( MavenSession ) ruleHelper . evaluate ( "${session}" ) )
291
- .withMojoExecution (( MojoExecution ) ruleHelper . evaluate ( "${ mojoExecution}" ) )
300
+ .withLog (new PluginLogWrapper ( getLog () ))
301
+ .withMavenSession (mavenSession )
302
+ .withMojoExecution (mojoExecution )
292
303
.build ();
293
- } catch (ExpressionEvaluationException e ) {
294
- throw new RuntimeException ("Cannot evaluate project metadata" , e );
295
- } catch (ComponentLookupException | MojoExecutionException e ) {
296
- throw new RuntimeException ("Cannot resolve dependency" , e );
304
+ } catch (MojoExecutionException e ) {
305
+ throw new EnforcerRuleError ("Cannot resolve dependency" , e );
297
306
}
298
307
}
299
308
300
309
@ Override
301
- public boolean isCacheable () {
302
- return false ;
303
- }
304
-
305
- @ Override
306
- public boolean isResultValid (EnforcerRule enforcerRule ) {
307
- return false ;
308
- }
310
+ public void execute () throws EnforcerRuleException {
309
311
310
- @ Override
311
- public String getCacheId () {
312
- return "Does not matter as not cacheable" ;
313
- }
312
+ PluginLogWrapper pluginLog = new PluginLogWrapper (getLog ());
314
313
315
- @ Override
316
- public void execute (EnforcerRuleHelper ruleHelper ) throws EnforcerRuleException {
317
314
VersionsHelper versionsHelper =
318
- createVersionsHelper (ruleHelper , serverId != null ? serverId : "serverId" , rulesUri , ruleSet );
319
- MavenProject project = getMavenProject ( ruleHelper );
315
+ createVersionsHelper (serverId != null ? serverId : "serverId" , rulesUri , ruleSet );
316
+
320
317
Set <Dependency > dependencies = new TreeSet <>(DependencyComparator .INSTANCE );
321
318
if (processDependencyManagement ) {
322
319
try {
323
320
dependencies .addAll (filterDependencies (
324
321
extractDependenciesFromDependencyManagement (
325
- project , processDependencyManagementTransitive , ruleHelper . getLog () ),
322
+ project , processDependencyManagementTransitive , pluginLog ),
326
323
dependencyManagementIncludes ,
327
324
dependencyManagementExcludes ,
328
325
"Dependency Management" ,
329
- ruleHelper . getLog () ));
326
+ pluginLog ));
330
327
} catch (VersionRetrievalException e ) {
331
- throw new EnforcerRuleException (e .getMessage ());
328
+ throw new EnforcerRuleError (e .getMessage ());
332
329
}
333
330
}
334
331
if (processPluginDependencies ) {
@@ -337,23 +334,19 @@ public void execute(EnforcerRuleHelper ruleHelper) throws EnforcerRuleException
337
334
pluginDependencyIncludes ,
338
335
pluginDependencyExcludes ,
339
336
"Plugin Dependencies" ,
340
- ruleHelper . getLog () ));
337
+ pluginLog ));
341
338
}
342
339
if (processPluginDependenciesInPluginManagement ) {
343
340
dependencies .addAll (filterDependencies (
344
341
extractPluginDependenciesFromPluginsInPluginManagement (project ),
345
342
pluginManagementDependencyIncludes ,
346
343
pluginManagementDependencyExcludes ,
347
344
"Plugin Management Dependencies" ,
348
- ruleHelper . getLog () ));
345
+ pluginLog ));
349
346
}
350
347
if (processDependencies ) {
351
348
dependencies .addAll (filterDependencies (
352
- project .getDependencies (),
353
- dependencyIncludes ,
354
- dependencyExcludes ,
355
- "Dependencies" ,
356
- ruleHelper .getLog ()));
349
+ project .getDependencies (), dependencyIncludes , dependencyExcludes , "Dependencies" , pluginLog ));
357
350
}
358
351
try {
359
352
Optional <Segment > ignoredSegment = ignoreSubIncrementalUpdates
@@ -379,13 +372,7 @@ public void execute(EnforcerRuleHelper ruleHelper) throws EnforcerRuleException
379
372
.collect (Collectors .joining (", " )));
380
373
}
381
374
} catch (VersionRetrievalException e ) {
382
- throw new RuntimeException ( e . getMessage (), e );
375
+ throw new EnforcerRuleError ( e );
383
376
}
384
377
}
385
-
386
- @ Override
387
- public EnforcerLevel getLevel () {
388
- // all reported items should be treated as errors
389
- return EnforcerLevel .ERROR ;
390
- }
391
378
}
0 commit comments