Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilos Kleint2010-12-07 12:48:17 +0000
committerMilos Kleint2010-12-07 16:29:23 +0000
commitc62fe92acff6b948a4b673b4d066e0b9ddd2ae64 (patch)
tree864e403c08b760fff4efe327b9f51c75904c0bc3
parent72d60b3d46e2314004977fd92c530aa703f1297b (diff)
downloadm2e-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.java37
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);
}
}
}

Back to the top