diff options
author | Milos Kleint | 2010-12-07 12:48:17 +0000 |
---|---|---|
committer | Milos Kleint | 2010-12-07 16:29:23 +0000 |
commit | c62fe92acff6b948a4b673b4d066e0b9ddd2ae64 (patch) | |
tree | 864e403c08b760fff4efe327b9f51c75904c0bc3 | |
parent | 72d60b3d46e2314004977fd92c530aa703f1297b (diff) | |
download | m2e-core-c62fe92acff6b948a4b673b4d066e0b9ddd2ae64.tar.gz m2e-core-c62fe92acff6b948a4b673b4d066e0b9ddd2ae64.tar.xz m2e-core-c62fe92acff6b948a4b673b4d066e0b9ddd2ae64.zip |
attempt to collect the managed plugins in the project and pass them to the selection dialog. Allows us later to avoid setting the version element as well.
not entirely reliable due to often missing MavenProjectFacade.getMavenProject()
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/actions/AddPluginAction.java | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/actions/AddPluginAction.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/actions/AddPluginAction.java index 5251d527..bf4a8a27 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/actions/AddPluginAction.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/actions/AddPluginAction.java @@ -12,20 +12,29 @@ package org.eclipse.m2e.core.actions; import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.jface.action.IAction; import org.eclipse.jface.window.Window; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import org.apache.maven.model.Plugin; +import org.apache.maven.model.PluginManagement; +import org.apache.maven.project.MavenProject; + import org.eclipse.m2e.core.MavenPlugin; +import org.eclipse.m2e.core.core.IMavenConstants; import org.eclipse.m2e.core.core.MavenLogger; import org.eclipse.m2e.core.embedder.ArtifactKey; import org.eclipse.m2e.core.embedder.MavenModelManager; import org.eclipse.m2e.core.index.IIndex; import org.eclipse.m2e.core.index.IndexedArtifactFile; import org.eclipse.m2e.core.internal.Messages; +import org.eclipse.m2e.core.project.IMavenProjectFacade; import org.eclipse.m2e.core.ui.dialogs.MavenRepositorySearchDialog; @@ -39,19 +48,41 @@ public class AddPluginAction extends MavenActionSupport implements IWorkbenchWin if(file == null) { return; } + //TODO attempts to populate the managed keys here, but works on reliably as facade.getMavenProject can be null + //depending on the user's preferences and previous IDE interactions. + IProject prj = file.getProject(); + Set<ArtifactKey> managedKeys = new HashSet<ArtifactKey>(); + if (prj != null && IMavenConstants.POM_FILE_NAME.equals(file.getProjectRelativePath().toString())) { + IMavenProjectFacade facade = MavenPlugin.getDefault().getMavenProjectManager().getProject(prj); + if (facade != null) { + MavenProject mp = facade.getMavenProject(); + if (mp != null) { + PluginManagement pm = mp.getPluginManagement(); + if (pm != null && pm.getPlugins() != null) { + for (Plugin plug : pm.getPlugins()) { + managedKeys.add(new ArtifactKey(plug.getGroupId(), plug.getArtifactId(), plug.getVersion(), null)); + } + } + } + } + } + - MavenRepositorySearchDialog dialog = new MavenRepositorySearchDialog(getShell(), Messages.AddPluginAction_searchDialog_title, IIndex.SEARCH_PLUGIN, Collections.<ArtifactKey> emptySet()); + MavenRepositorySearchDialog dialog = new MavenRepositorySearchDialog(getShell(), Messages.AddPluginAction_searchDialog_title, + IIndex.SEARCH_PLUGIN, Collections.<ArtifactKey> emptySet(), managedKeys); if(dialog.open() == Window.OK) { final IndexedArtifactFile indexedArtifactFile = (IndexedArtifactFile) dialog.getFirstResult(); if(indexedArtifactFile != null) { try { + ArtifactKey key = new ArtifactKey(indexedArtifactFile.group, indexedArtifactFile.artifact, indexedArtifactFile.version, null); + boolean isManaged = managedKeys.contains(key); MavenModelManager modelManager = MavenPlugin.getDefault().getMavenModelManager(); modelManager.updateProject(file, new MavenModelManager.PluginAdder( // indexedArtifactFile.group, // indexedArtifactFile.artifact, // - indexedArtifactFile.version)); + isManaged ? null : indexedArtifactFile.version)); } catch(Exception ex) { - MavenLogger.log("Can't add dependency to " + file, ex); + MavenLogger.log("Can't add plugin to " + file, ex); } } } |