blob: 2845bac4c127df244cd813bba7effef037c946a6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2011 Sonatype Inc. and others.
* 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:
* Sonatype Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.tycho.core.resolver;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.logging.Logger;
import org.eclipse.tycho.core.DependencyResolver;
import org.eclipse.tycho.core.TargetPlatformConfiguration;
import org.eclipse.tycho.core.TychoConstants;
import org.eclipse.tycho.core.osgitools.targetplatform.LocalDependencyResolver;
import org.eclipse.tycho.core.utils.TychoProjectUtils;
@Component(role = DefaultDependencyResolverFactory.class)
public class DefaultDependencyResolverFactory {
private static final String DEFAULT_RESOLVER_HINT = "p2";
@Requirement
private Logger logger;
@Requirement
private PlexusContainer container;
public DependencyResolver lookupDependencyResolver(MavenProject project) {
Properties properties = (Properties) project.getContextValue(TychoConstants.CTX_MERGED_PROPERTIES);
TargetPlatformConfiguration configuration = TychoProjectUtils.getTargetPlatformConfiguration(project);
String property = properties.getProperty("tycho.targetPlatform");
DependencyResolver resolver;
if (property != null) {
logger.warn("-Dtycho.targetPlatform is deprecated and WILL be removed in the next Tycho version.");
File location = new File(property);
if (!location.exists() || !location.isDirectory()) {
throw new RuntimeException("Invalid target platform location: " + property);
}
try {
resolver = container.lookup(DependencyResolver.class, LocalDependencyResolver.ROLE_HINT);
} catch (ComponentLookupException e) {
throw new RuntimeException("Could not instantiate required component", e);
}
try {
((LocalDependencyResolver) resolver).setLocation(new File(property));
} catch (IOException e) {
throw new RuntimeException("Could not create target platform", e);
}
return resolver;
}
String resolverRole = configuration.getTargetPlatformResolver();
if (resolverRole == null) {
resolverRole = DEFAULT_RESOLVER_HINT;
}
try {
resolver = container.lookup(DependencyResolver.class, resolverRole);
} catch (ComponentLookupException e) {
throw new RuntimeException("Could not instantiate required component", e);
}
return resolver;
}
}