use of org.apache.maven.plugin.version.PluginVersionResult in project maven-plugins by apache.
the class DescribeMojoTest method testLookupPluginDescriptorPrefixWithoutVersion.
public void testLookupPluginDescriptorPrefixWithoutVersion() throws Throwable {
DescribeMojo mojo = new DescribeMojo();
PluginInfo pi = new PluginInfo();
pi.setPrefix("help");
Plugin plugin = new Plugin();
plugin.setGroupId("org.test");
plugin.setArtifactId("test");
PluginDescriptor pd = new PluginDescriptor();
MojoDescriptorCreator mojoDescriptorCreator = mock(MojoDescriptorCreator.class);
PluginVersionResolver pluginVersionResolver = mock(PluginVersionResolver.class);
MavenPluginManagerHelper pluginManager = mock(MavenPluginManagerHelper.class);
PluginVersionResult versionResult = mock(PluginVersionResult.class);
MavenSession session = mock(MavenSession.class);
PrivateAccessor.setField(mojo, "mojoDescriptorCreator", mojoDescriptorCreator);
PrivateAccessor.setField(mojo, "pluginVersionResolver", pluginVersionResolver);
PrivateAccessor.setField(mojo, "pluginManager", pluginManager);
PrivateAccessor.setField(mojo, "session", session);
PrivateAccessor.setField(mojo, "project", new MavenProject());
when(mojoDescriptorCreator.findPluginForPrefix("help", session)).thenReturn(plugin);
when(pluginVersionResolver.resolve(any(PluginVersionRequest.class))).thenReturn(versionResult);
when(versionResult.getVersion()).thenReturn("1.0");
when(pluginManager.getPluginDescriptor(any(Plugin.class), eq(session))).thenReturn(pd);
PluginDescriptor returned = (PluginDescriptor) PrivateAccessor.invoke(mojo, "lookupPluginDescriptor", new Class[] { PluginInfo.class }, new Object[] { pi });
assertEquals(pd, returned);
verify(mojoDescriptorCreator).findPluginForPrefix("help", session);
ArgumentCaptor<PluginVersionRequest> versionArgument = ArgumentCaptor.forClass(PluginVersionRequest.class);
verify(pluginVersionResolver).resolve(versionArgument.capture());
assertEquals("org.test", versionArgument.getValue().getGroupId());
assertEquals("test", versionArgument.getValue().getArtifactId());
ArgumentCaptor<Plugin> argument = ArgumentCaptor.forClass(Plugin.class);
verify(pluginManager).getPluginDescriptor(argument.capture(), eq(session));
Plugin capturedPlugin = argument.getValue();
assertEquals("org.test", capturedPlugin.getGroupId());
assertEquals("test", capturedPlugin.getArtifactId());
assertEquals("1.0", capturedPlugin.getVersion());
}
use of org.apache.maven.plugin.version.PluginVersionResult in project maven-plugins by apache.
the class DescribeMojo method lookupPluginDescriptor.
/**
* Method for retrieving the description of the plugin
*
* @param pi holds information of the plugin whose description is to be retrieved
* @return a PluginDescriptor where the plugin description is to be retrieved
* @throws MojoExecutionException if the plugin could not be verify
* @throws MojoFailureException if groupId or artifactId is empty
*/
private PluginDescriptor lookupPluginDescriptor(PluginInfo pi) throws MojoExecutionException, MojoFailureException {
Plugin forLookup = null;
if (StringUtils.isNotEmpty(pi.getPrefix())) {
try {
forLookup = mojoDescriptorCreator.findPluginForPrefix(pi.getPrefix(), session);
} catch (NoPluginFoundForPrefixException e) {
throw new MojoExecutionException("Unable to find the plugin with prefix: " + pi.getPrefix(), e);
}
} else if (StringUtils.isNotEmpty(pi.getGroupId()) && StringUtils.isNotEmpty(pi.getArtifactId())) {
forLookup = new Plugin();
forLookup.setGroupId(pi.getGroupId());
forLookup.setArtifactId(pi.getArtifactId());
}
if (forLookup == null) {
String msg = "You must specify either: both 'groupId' and 'artifactId' parameters OR a 'plugin' parameter" + " OR a 'cmd' parameter. For instance:" + LS + " # mvn help:describe -Dcmd=install" + LS + "or" + LS + " # mvn help:describe -Dcmd=help:describe" + LS + "or" + LS + " # mvn help:describe -Dplugin=org.apache.maven.plugins:maven-help-plugin" + LS + "or" + LS + " # mvn help:describe -DgroupId=org.apache.maven.plugins -DartifactId=maven-help-plugin" + LS + LS + "Try 'mvn help:help -Ddetail=true' for more information.";
throw new MojoFailureException(msg);
}
if (StringUtils.isNotEmpty(pi.getVersion())) {
forLookup.setVersion(pi.getVersion());
} else {
try {
DefaultPluginVersionRequest versionRequest = new DefaultPluginVersionRequest(forLookup, session);
versionRequest.setPom(project.getModel());
PluginVersionResult versionResult = pluginVersionResolver.resolve(versionRequest);
forLookup.setVersion(versionResult.getVersion());
} catch (PluginVersionResolutionException e) {
throw new MojoExecutionException("Unable to resolve the version of the plugin with prefix: " + pi.getPrefix(), e);
}
}
try {
return pluginManager.getPluginDescriptor(forLookup, session);
} catch (Exception e) {
throw new MojoExecutionException("Error retrieving plugin descriptor for:" + LS + LS + "groupId: '" + groupId + "'" + LS + "artifactId: '" + artifactId + "'" + LS + "version: '" + version + "'" + LS + LS, e);
}
}
Aggregations