1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.internal;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import org.apache.maven.plugin.MavenPluginPrerequisitesChecker;
26 import org.apache.maven.plugin.descriptor.PluginDescriptor;
27 import org.apache.maven.rtinfo.RuntimeInformation;
28 import org.codehaus.plexus.util.StringUtils;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 @Named
33 @Singleton
34 public class MavenPluginMavenPrerequisiteChecker implements MavenPluginPrerequisitesChecker {
35 private final Logger logger = LoggerFactory.getLogger(getClass());
36 private final RuntimeInformation runtimeInformation;
37
38 @Inject
39 public MavenPluginMavenPrerequisiteChecker(RuntimeInformation runtimeInformation) {
40 super();
41 this.runtimeInformation = runtimeInformation;
42 }
43
44 @Override
45 public void accept(PluginDescriptor pluginDescriptor) {
46 String requiredMavenVersion = pluginDescriptor.getRequiredMavenVersion();
47 if (StringUtils.isNotBlank(requiredMavenVersion)) {
48 boolean isRequirementMet = false;
49 try {
50 isRequirementMet = runtimeInformation.isMavenVersion(requiredMavenVersion);
51 } catch (IllegalArgumentException e) {
52 logger.warn(
53 "Could not verify plugin's Maven prerequisite as an invalid version is given in "
54 + requiredMavenVersion,
55 e);
56 return;
57 }
58 if (!isRequirementMet) {
59 throw new IllegalStateException("Required Maven version " + requiredMavenVersion
60 + " is not met by current version " + runtimeInformation.getMavenVersion());
61 }
62 }
63 }
64 }