Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2014-03-24 19:52:35 +0000
committerEike Stepper2014-03-24 19:57:03 +0000
commitdf69e1fe24f17740605b7b5dfd39eafeb25d1c5a (patch)
tree06281874546f0352054d5af11a2e67be419ff764
parent47abe0293941f0efc2a86f082ab99b2edf38d1fa (diff)
downloadcdo-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
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.predicates/src/org/eclipse/emf/cdo/releng/predicates/PredicatesFactory.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/buckminster.cspex6
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/component.ext1
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/setups/releng.setup1
-rw-r--r--plugins/org.eclipse.emf.cdo.releng.setup/src/org/eclipse/emf/cdo/releng/setup/impl/MavenImportTaskImpl.java94
-rw-r--r--plugins/org.eclipse.emf.cdo.releng/build.rmap5
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"/>

Back to the top