/*******************************************************************************
* Copyright (c) 2012 VMware, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.roo.ui.internal.wizard;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.project.IProjectConfigurationManager;
import org.eclipse.m2e.core.project.ResolverConfiguration;
import org.springframework.ide.eclipse.core.SpringCorePreferences;
import org.springframework.ide.eclipse.maven.MavenCorePlugin;
import org.springframework.ide.eclipse.roo.core.RooCoreActivator;
/**
* @author Christian Dupuis
*/
public abstract class DependencyManagementUtils {
private static final String M2ECLIPSE_CLASS = "org.eclipse.m2e.core.MavenPlugin";
private static final String MAVEN_STS_CLASS = "com.springsource.sts.maven.MavenCorePlugin";
public static final boolean IS_M2ECLIPSE_PRESENT = isPresent(M2ECLIPSE_CLASS);
public static final boolean IS_STS_MAVEN_PRESENT = isPresent(MAVEN_STS_CLASS);
public static boolean isPresent(String className) {
try {
Class.forName(className);
return true;
}
catch (ClassNotFoundException e) {
return false;
}
}
public static String getMavenStsPluginId() {
return MavenCorePlugin.PLUGIN_ID;
}
public static String getMavenStsPreferenceKey() {
return MavenCorePlugin.AUTOMATICALLY_UPDATE_DEPENDENCIES_KEY;
}
public static void installDependencyManagement(final IProject project, DependencyManagement dependencyManagement) {
if (dependencyManagement == DependencyManagement.MAVEN_STS) {
SpringCorePreferences.getProjectPreferences(project, DependencyManagementUtils.getMavenStsPluginId())
.putBoolean(DependencyManagementUtils.getMavenStsPreferenceKey(), true);
}
else if (dependencyManagement == DependencyManagement.M2ECLIPSE) {
Job mavenJob = new Job("Configuring Maven tools") {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
ResolverConfiguration configuration = new ResolverConfiguration();
configuration.setResolveWorkspaceProjects(true);
configuration.setActiveProfiles("");
IProjectConfigurationManager configurationManager = MavenPlugin.getProjectConfigurationManager();
configurationManager.enableMavenNature(project, configuration, new NullProgressMonitor());
configurationManager.updateProjectConfiguration(project, new NullProgressMonitor());
}
catch (CoreException e) {
RooCoreActivator.log(e);
}
return Status.OK_STATUS;
}
};
mavenJob.setSystem(true);
mavenJob.schedule();
}
}
}