diff --git a/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java b/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java index 341aee5b41b8..4d5d8597a0fb 100644 --- a/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java +++ b/plugins/maven/maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerEmbedderImpl.java @@ -285,19 +285,30 @@ public class Maven2ServerEmbedderImpl extends MavenRemoteObject implements Maven MavenProject project = RemoteNativeMavenProjectHolder.findProjectById(nativeMavenProjectId); PluginDescriptor result = getComponent(PluginManager.class).verifyPlugin(mavenPlugin, project, myImpl.getSettings(), myImpl.getLocalRepository()); - if (!transitive) return Collections.emptyList(); - - // todo try to use parallel downloading Map resolvedArtifacts = new THashMap(); - for (Artifact each : (Iterable)result.getIntroducedDependencyArtifacts()) { - resolveIfNecessary(new MavenArtifactInfo(each.getGroupId(), each.getArtifactId(), each.getVersion(), each.getType(), null), - repositories, resolvedArtifacts); - } - for (ComponentDependency each : (List)result.getDependencies()) { - resolveIfNecessary(new MavenArtifactInfo(each.getGroupId(), each.getArtifactId(), each.getVersion(), each.getType(), null), - repositories, resolvedArtifacts); + + Artifact pluginArtifact = result.getPluginArtifact(); + + MavenArtifactInfo artifactInfo = new MavenArtifactInfo(pluginArtifact.getGroupId(), + pluginArtifact.getArtifactId(), + pluginArtifact.getVersion(), + pluginArtifact.getType(), null); + + resolveIfNecessary(artifactInfo, repositories, resolvedArtifacts); + + if (transitive) { + // todo try to use parallel downloading + for (Artifact each : (Iterable)result.getIntroducedDependencyArtifacts()) { + resolveIfNecessary(new MavenArtifactInfo(each.getGroupId(), each.getArtifactId(), each.getVersion(), each.getType(), null), + repositories, resolvedArtifacts); + } + for (ComponentDependency each : (List)result.getDependencies()) { + resolveIfNecessary(new MavenArtifactInfo(each.getGroupId(), each.getArtifactId(), each.getVersion(), each.getType(), null), + repositories, resolvedArtifacts); + } } + return new THashSet(resolvedArtifacts.values()); } catch (Exception e) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java index 685b5e61758f..21c7cb627dc9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java @@ -1022,11 +1022,26 @@ public class MavenProjectsTree { embedder.clearCachesFor(mavenProject.getMavenId()); try { + process.setText(ProjectBundle.message("maven.downloading.pom.plugins", mavenProject.getDisplayName())); + + Set filesToRefresh = new HashSet(); + for (MavenPlugin each : mavenProject.getDeclaredPlugins()) { process.checkCanceled(); - process.setText(ProjectBundle.message("maven.downloading.pom.plugins", mavenProject.getDisplayName())); - embedder.resolvePlugin(each, mavenProject.getRemoteRepositories(), nativeMavenProject, false); + + Collection artifacts = embedder.resolvePlugin(each, mavenProject.getRemoteRepositories(), nativeMavenProject, false); + + for (MavenArtifact artifact : artifacts) { + File pluginJar = artifact.getFile(); + File pluginDir = pluginJar.getParentFile(); + if (pluginDir != null) { + filesToRefresh.add(pluginDir); // Refresh both *.pom and *.jar files. + } + } } + + LocalFileSystem.getInstance().refreshIoFiles(filesToRefresh); + mavenProject.resetCache(); firePluginsResolved(mavenProject); }