Skip to content

Commit c44304f

Browse files
authored
1 parent c1c114d commit c44304f

File tree

1 file changed

+42
-10
lines changed

1 file changed

+42
-10
lines changed

maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java

+42-10
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.apache.maven.model.Build;
3636
import org.apache.maven.model.Plugin;
3737
import org.apache.maven.plugin.MavenPluginManager;
38+
import org.apache.maven.plugin.PluginIncompatibleException;
3839
import org.apache.maven.plugin.PluginResolutionException;
3940
import org.apache.maven.plugin.descriptor.PluginDescriptor;
4041
import org.apache.maven.plugin.version.PluginVersionRequest;
@@ -158,6 +159,8 @@ private void selectVersion(DefaultPluginVersionResult result, PluginVersionReque
158159
throws PluginVersionResolutionException {
159160
String version = null;
160161
ArtifactRepository repo = null;
162+
boolean resolvedPluginVersions = !versions.versions.isEmpty();
163+
boolean searchPerformed = false;
161164

162165
if (StringUtils.isNotEmpty(versions.releaseVersion)) {
163166
version = versions.releaseVersion;
@@ -167,8 +170,11 @@ private void selectVersion(DefaultPluginVersionResult result, PluginVersionReque
167170
repo = versions.latestRepository;
168171
}
169172
if (version != null && !isCompatible(request, version)) {
173+
logger.info("Latest version of plugin " + request.getGroupId() + ":" + request.getArtifactId()
174+
+ " failed compatibility check");
170175
versions.versions.remove(version);
171176
version = null;
177+
searchPerformed = true;
172178
}
173179

174180
if (version == null) {
@@ -191,16 +197,26 @@ private void selectVersion(DefaultPluginVersionResult result, PluginVersionReque
191197
}
192198
}
193199

194-
for (Version v : releases) {
195-
String ver = v.toString();
196-
if (isCompatible(request, ver)) {
197-
version = ver;
198-
repo = versions.versions.get(version);
199-
break;
200+
if (!releases.isEmpty()) {
201+
logger.info("Looking for compatible RELEASE version of plugin "
202+
+ request.getGroupId()
203+
+ ":"
204+
+ request.getArtifactId());
205+
for (Version v : releases) {
206+
String ver = v.toString();
207+
if (isCompatible(request, ver)) {
208+
version = ver;
209+
repo = versions.versions.get(version);
210+
break;
211+
}
200212
}
201213
}
202214

203-
if (version == null) {
215+
if (version == null && !snapshots.isEmpty()) {
216+
logger.info("Looking for compatible SNAPSHOT version of plugin "
217+
+ request.getGroupId()
218+
+ ":"
219+
+ request.getArtifactId());
204220
for (Version v : snapshots) {
205221
String ver = v.toString();
206222
if (isCompatible(request, ver)) {
@@ -213,15 +229,27 @@ private void selectVersion(DefaultPluginVersionResult result, PluginVersionReque
213229
}
214230

215231
if (version != null) {
232+
// if LATEST worked out of the box, remain silent as today, otherwise inform user about search result
233+
if (searchPerformed) {
234+
logger.info("Selected plugin " + request.getGroupId() + ":" + request.getArtifactId() + ":" + version);
235+
}
216236
result.setVersion(version);
217237
result.setRepository(repo);
218238
} else {
239+
logger.warn((resolvedPluginVersions
240+
? "Could not find compatible version of plugin in any plugin repository: "
241+
: "Plugin not found in any plugin repository: ")
242+
+ request.getGroupId()
243+
+ ":"
244+
+ request.getArtifactId());
219245
throw new PluginVersionResolutionException(
220246
request.getGroupId(),
221247
request.getArtifactId(),
222248
request.getRepositorySession().getLocalRepository(),
223249
request.getRepositories(),
224-
"Plugin not found in any plugin repository");
250+
resolvedPluginVersions
251+
? "Could not find compatible plugin version in any plugin repository"
252+
: "Plugin not found in any plugin repository");
225253
}
226254
}
227255

@@ -246,8 +274,12 @@ private boolean isCompatible(PluginVersionRequest request, String version) {
246274

247275
try {
248276
pluginManager.checkRequiredMavenVersion(pluginDescriptor);
249-
} catch (Exception e) {
250-
logger.debug("Ignoring incompatible plugin version " + version + ": " + e.getMessage());
277+
} catch (PluginIncompatibleException e) {
278+
if (logger.isDebugEnabled()) {
279+
logger.warn("Ignoring incompatible plugin version " + version, e);
280+
} else {
281+
logger.warn("Ignoring incompatible plugin version " + version + ": " + e.getMessage());
282+
}
251283
return false;
252284
}
253285

0 commit comments

Comments
 (0)