diff options
author | Eike Stepper | 2014-03-24 19:52:35 +0000 |
---|---|---|
committer | Eike Stepper | 2014-03-24 19:57:03 +0000 |
commit | df69e1fe24f17740605b7b5dfd39eafeb25d1c5a (patch) | |
tree | 06281874546f0352054d5af11a2e67be419ff764 | |
parent | 47abe0293941f0efc2a86f082ab99b2edf38d1fa (diff) | |
download | cdo-df69e1fe24f17740605b7b5dfd39eafeb25d1c5a.tar.gz cdo-df69e1fe24f17740605b7b5dfd39eafeb25d1c5a.tar.xz cdo-df69e1fe24f17740605b7b5dfd39eafeb25d1c5a.zip |
[430954] [Oomph] Support Maven Project Import via M2E
https://bugs.eclipse.org/bugs/show_bug.cgi?id=430954
6 files changed, 59 insertions, 51 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.predicates/src/org/eclipse/emf/cdo/releng/predicates/PredicatesFactory.java b/plugins/org.eclipse.emf.cdo.releng.predicates/src/org/eclipse/emf/cdo/releng/predicates/PredicatesFactory.java index aeabcd916a..4949638c0f 100644 --- a/plugins/org.eclipse.emf.cdo.releng.predicates/src/org/eclipse/emf/cdo/releng/predicates/PredicatesFactory.java +++ b/plugins/org.eclipse.emf.cdo.releng.predicates/src/org/eclipse/emf/cdo/releng/predicates/PredicatesFactory.java @@ -11,6 +11,7 @@ package org.eclipse.emf.cdo.releng.predicates; import org.eclipse.emf.cdo.releng.internal.predicates.ExternalProject.AbstractXMLDescriptionFactory.Eclipse; +import org.eclipse.emf.cdo.releng.internal.predicates.ExternalProject.AbstractXMLDescriptionFactory.Maven; import org.eclipse.emf.ecore.EFactory; @@ -147,7 +148,7 @@ public interface PredicatesFactory extends EFactory { public static final ProjectDescriptionFactory ECLIPSE = new Eclipse(); - public static final ProjectDescriptionFactory MAVEN = new Eclipse(); + public static final ProjectDescriptionFactory MAVEN = new Maven(); public IProjectDescription createDescription(File folder) throws Exception; } diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/buckminster.cspex b/plugins/org.eclipse.emf.cdo.releng.setup/buckminster.cspex index 58b3cd9fac..42d819ce82 100644 --- a/plugins/org.eclipse.emf.cdo.releng.setup/buckminster.cspex +++ b/plugins/org.eclipse.emf.cdo.releng.setup/buckminster.cspex @@ -5,11 +5,13 @@ <cs:dependency name="org.eclipse.jgit" componentType="eclipse.feature"/> <cs:dependency name="org.eclipse.egit" componentType="eclipse.feature"/> - <cs:dependency name="org.apache.httpcomponents.httpcore" componentType="osgi.bundle" versionDesignator="4.2.5"/> - <cs:dependency name="org.apache.httpcomponents.httpclient" componentType="osgi.bundle" versionDesignator="4.2.6"/> <cs:dependency name="org.eclipse.mylyn.sdk_feature" componentType="eclipse.feature"/> <cs:dependency name="org.eclipse.mylyn.bugzilla_feature" componentType="eclipse.feature"/> <cs:dependency name="org.eclipse.mylyn.builds.sdk" componentType="eclipse.feature"/> + <cs:dependency name="org.apache.httpcomponents.httpcore" componentType="osgi.bundle" versionDesignator="4.2.5"/> + <cs:dependency name="org.apache.httpcomponents.httpclient" componentType="osgi.bundle" versionDesignator="4.2.6"/> + + <cs:dependency name="org.eclipse.m2e.feature" componentType="eclipse.feature"/> <cs:dependency name="org.eclipse.buckminster.core.feature" componentType="eclipse.feature"/> <cs:dependency name="org.eclipse.buckminster.git.feature" componentType="eclipse.feature"/> diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/component.ext b/plugins/org.eclipse.emf.cdo.releng.setup/component.ext index 2d0a567e2c..f104c1ab61 100644 --- a/plugins/org.eclipse.emf.cdo.releng.setup/component.ext +++ b/plugins/org.eclipse.emf.cdo.releng.setup/component.ext @@ -6,6 +6,7 @@ <dependencies id="org.eclipse.mylyn.sdk_feature.feature.group"/> <dependencies id="org.eclipse.mylyn.bugzilla_feature.feature.group"/> <dependencies id="org.eclipse.mylyn.builds.sdk.feature.group"/> + <dependencies id="org.eclipse.m2e.feature.feature.group"/> <dependencies id="org.eclipse.buckminster.core.feature.feature.group"/> <dependencies id="org.eclipse.buckminster.pde"/> <dependencies id="javax.xml.bind"/> diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/setups/releng.setup b/plugins/org.eclipse.emf.cdo.releng.setup/setups/releng.setup index f5f3bcb560..a5cb126f25 100644 --- a/plugins/org.eclipse.emf.cdo.releng.setup/setups/releng.setup +++ b/plugins/org.eclipse.emf.cdo.releng.setup/setups/releng.setup @@ -66,6 +66,7 @@ <p2Repositories url="http://download.eclipse.org/mylyn/snapshots/weekly"/> <p2Repositories url="http://download.eclipse.org/technology/nebula/snapshot"/> <p2Repositories url="http://download.eclipse.org/technology/m2e/milestones/1.5"/> + <p2Repositories url="http://download.eclipse.org/webtools/repository/luna"/> </repositoryLists> </setupTasks> <setupTasks xsi:type="setup:WorkingSetTask"> diff --git a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/MavenImportTaskImpl.java b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/MavenImportTaskImpl.java index 85c10b6a75..d20ff6a261 100644 --- a/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/MavenImportTaskImpl.java +++ b/plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/MavenImportTaskImpl.java @@ -23,7 +23,9 @@ import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; import org.eclipse.m2e.core.MavenPlugin; import org.eclipse.m2e.core.embedder.MavenModelManager; import org.eclipse.m2e.core.project.IProjectConfigurationManager; @@ -54,6 +56,8 @@ import java.util.Set; */ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTask { + private static final IWorkspaceRoot ROOT = ResourcesPlugin.getWorkspace().getRoot(); + /** * The cached value of the '{@link #getSourceLocators() <em>Source Locators</em>}' containment reference list. * <!-- begin-user-doc --> @@ -64,8 +68,6 @@ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTas */ protected EList<AutomaticSourceLocator> sourceLocators; - private transient MavenDelegate mavenDelegate; - /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -194,51 +196,46 @@ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTas public boolean isNeeded(SetupTaskContext context) throws Exception { - mavenDelegate = MavenUtil.create(); - return mavenDelegate.isNeeded(context, this); - } + EList<AutomaticSourceLocator> sourceLocators = getSourceLocators(); + if (sourceLocators.isEmpty()) + { + return false; + } - public void perform(SetupTaskContext context) throws Exception - { - if (mavenDelegate != null) + if (context.getTrigger() != Trigger.MANUAL) { - mavenDelegate.perform(context, this); + for (IProject project : ROOT.getProjects()) + { + IPath projectFolder = project.getLocation(); + for (AutomaticSourceLocator sourceLocator : sourceLocators) + { + Path rootFolder = new Path(sourceLocator.getRootFolder()); + if (rootFolder.isPrefixOf(projectFolder)) + { + // In STARTUP trigger don't perform if there's already at least 1 project from the source locators + return false; + } + } + } } + + return true; } - /** - * @author Eike Stepper - */ - private interface MavenDelegate + public void perform(SetupTaskContext context) throws Exception { - public boolean isNeeded(SetupTaskContext context, MavenImportTaskImpl impl) throws Exception; - - public void perform(SetupTaskContext context, MavenImportTaskImpl impl) throws Exception; + MavenUtil.perform(context, this); } /** * @author Eike Stepper */ - private static final class MavenUtil implements MavenDelegate + private static final class MavenUtil { - private static final IWorkspaceRoot ROOT = ResourcesPlugin.getWorkspace().getRoot(); - - private Set<MavenProjectInfo> projectInfos = new LinkedHashSet<MavenProjectInfo>(); - - private static MavenDelegate create() - { - return new MavenUtil(); - } - - public boolean isNeeded(SetupTaskContext context, MavenImportTaskImpl impl) throws Exception + public static void perform(SetupTaskContext context, MavenImportTaskImpl impl) throws Exception { - EList<AutomaticSourceLocator> sourceLocators = impl.getSourceLocators(); - if (sourceLocators.isEmpty()) - { - return false; - } - List<String> folders = new ArrayList<String>(); + EList<AutomaticSourceLocator> sourceLocators = impl.getSourceLocators(); for (AutomaticSourceLocator sourceLocator : sourceLocators) { @@ -246,19 +243,29 @@ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTas } MavenModelManager modelManager = MavenPlugin.getMavenModelManager(); + IProgressMonitor monitor = new ProgressLogMonitor(context); + LocalProjectScanner projectScanner = new LocalProjectScanner(null, folders, false, modelManager); - projectScanner.run(new ProgressLogMonitor(context)); + projectScanner.run(monitor); + Set<MavenProjectInfo> projectInfos = new LinkedHashSet<MavenProjectInfo>(); for (Iterator<MavenProjectInfo> it = projectScanner.getProjects().iterator(); it.hasNext();) { MavenProjectInfo projectInfo = it.next(); - processMavenProject(projectInfo, sourceLocators); + processMavenProject(projectInfo, projectInfos, sourceLocators); } - return !projectInfos.isEmpty(); + if (!projectInfos.isEmpty()) + { + ProjectImportConfiguration configuration = new ProjectImportConfiguration(); + + IProjectConfigurationManager projectConfigurationManager = MavenPlugin.getProjectConfigurationManager(); + projectConfigurationManager.importProjects(projectInfos, configuration, monitor); + } } - private void processMavenProject(MavenProjectInfo projectInfo, EList<AutomaticSourceLocator> sourceLocators) + private static void processMavenProject(MavenProjectInfo projectInfo, Set<MavenProjectInfo> projectInfos, + EList<AutomaticSourceLocator> sourceLocators) { File folder = projectInfo.getPomFile().getParentFile(); @@ -277,11 +284,11 @@ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTas for (MavenProjectInfo childProjectInfo : projectInfo.getProjects()) { - processMavenProject(childProjectInfo, sourceLocators); + processMavenProject(childProjectInfo, projectInfos, sourceLocators); } } - private boolean matches(IProject project, EList<AutomaticSourceLocator> sourceLocators) + private static boolean matches(IProject project, EList<AutomaticSourceLocator> sourceLocators) { for (AutomaticSourceLocator sourceLocator : sourceLocators) { @@ -297,15 +304,6 @@ public class MavenImportTaskImpl extends SetupTaskImpl implements MavenImportTas return true; } - - public void perform(SetupTaskContext context, MavenImportTaskImpl impl) throws Exception - { - ProjectImportConfiguration configuration = new ProjectImportConfiguration(); - IProgressMonitor monitor = new ProgressLogMonitor(context); - - IProjectConfigurationManager projectConfigurationManager = MavenPlugin.getProjectConfigurationManager(); - projectConfigurationManager.importProjects(projectInfos, configuration, monitor); - } } } // MavenImportTaskImpl diff --git a/plugins/org.eclipse.emf.cdo.releng/build.rmap b/plugins/org.eclipse.emf.cdo.releng/build.rmap index 7c8113405d..04d78a9e12 100644 --- a/plugins/org.eclipse.emf.cdo.releng/build.rmap +++ b/plugins/org.eclipse.emf.cdo.releng/build.rmap @@ -163,6 +163,11 @@ <rm:uri format="http://download.eclipse.org/technology/m2e/milestones/1.5"/> </rm:provider> + <!-- WEB TOOLS --> + <rm:provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false"> + <rm:uri format="http://download.eclipse.org/webtools/repository/luna"/> + </rm:provider> + <!-- NEBULA --> <rm:provider componentTypes="eclipse.feature,osgi.bundle" readerType="p2" source="false" mutable="false"> <rm:uri format="http://download.eclipse.org/technology/nebula/snapshot"/> |