blob: 34d05e1c0a7a507b19bc820e4aaf70e02d9b0c0a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 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;
import org.apache.maven.project.MavenProject;
import org.eclipse.tycho.ArtifactKey;
import org.eclipse.tycho.ReactorProject;
import org.eclipse.tycho.artifacts.DependencyArtifacts;
import org.eclipse.tycho.core.shared.TargetEnvironment;
/**
* tycho-specific behaviour associated with MavenProject instances. stateless.
*
* TODO take target environments into account!
*/
public interface TychoProject {
/**
* Walks all project dependencies, regardless of runtime environment filters.
*/
public ArtifactDependencyWalker getDependencyWalker(MavenProject project);
/**
* Walks project dependencies resolved for the specified runtime environment.
*/
public ArtifactDependencyWalker getDependencyWalker(MavenProject project, TargetEnvironment environment);
/**
* Returns resolved project dependencies. For projects targeting multiple runtime environments,
* returned collection includes artifacts for all supported runtime environments.
*/
public DependencyArtifacts getDependencyArtifacts(MavenProject project);
/**
* Returns resolved project dependencies resolved for specified runtime environment.
*/
public DependencyArtifacts getDependencyArtifacts(MavenProject project, TargetEnvironment environment);
// implementation must not depend on target platform
// TODO this method is not well-defined for some packaging types; some of them don't produce artifacts addressable via Eclipse coordinates
public ArtifactKey getArtifactKey(ReactorProject project);
/**
* Implicit target environment configuration present in project metadata, like, for example,
* Eclipse-PlatformFilter OSGi bundle manifest attribute.
*/
public TargetEnvironment getImplicitTargetEnvironment(MavenProject project);
}