in src/main/java/org/apache/maven/plugins/invoker/InstallMojo.java [253:310]
private void resolveExtraArtifacts(Map<String, Artifact> resolvedArtifacts)
throws MojoExecutionException, DependencyResolutionException, ArtifactResolutionException {
if (extraArtifacts == null) {
return;
}
DependencyFilter classpathFilter = DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME);
for (String extraArtifact : extraArtifacts) {
String[] gav = extraArtifact.split(":");
if (gav.length < 3 || gav.length > 5) {
throw new MojoExecutionException("Invalid artifact " + extraArtifact);
}
String groupId = gav[0];
String artifactId = gav[1];
String version = gav[2];
String type = "jar";
if (gav.length > 3) {
type = gav[3];
}
String classifier = null;
if (gav.length == 5) {
classifier = gav[4];
}
ArtifactType artifactType =
session.getRepositorySession().getArtifactTypeRegistry().get(type);
List<RemoteRepository> remoteRepositories =
artifactType != null && "maven-plugin".equals(artifactType.getId())
? project.getRemotePluginRepositories()
: project.getRemoteProjectRepositories();
Artifact artifact = new DefaultArtifact(groupId, artifactId, classifier, null, version, artifactType);
resolvePomsForArtifacts(Collections.singletonList(artifact), resolvedArtifacts, remoteRepositories);
CollectRequest collectRequest = new CollectRequest();
Dependency root = new Dependency(artifact, JavaScopes.COMPILE);
collectRequest.setRoot(root);
collectRequest.setRepositories(remoteRepositories);
DependencyRequest request = new DependencyRequest(collectRequest, classpathFilter);
DependencyResult dependencyResult =
repositorySystem.resolveDependencies(session.getRepositorySession(), request);
List<Artifact> artifacts = dependencyResult.getArtifactResults().stream()
.map(ArtifactResult::getArtifact)
.collect(Collectors.toList());
artifacts.forEach(a -> resolvedArtifacts.put(ArtifactIdUtils.toId(a), a));
resolvePomsForArtifacts(artifacts, resolvedArtifacts, collectRequest.getRepositories());
}
}