use of org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult in project tycho by eclipse.
the class P2DependencyResolver method doResolveDependencies.
private DependencyArtifacts doResolveDependencies(MavenSession session, MavenProject project, List<ReactorProject> reactorProjects, DependencyResolverConfiguration resolverConfiguration, TargetPlatform targetPlatform, P2Resolver resolver, TargetPlatformConfiguration configuration) {
Map<File, ReactorProject> projects = new HashMap<>();
resolver.setEnvironments(configuration.getEnvironments());
resolver.setAdditionalFilterProperties(configuration.getProfileProperties());
for (ReactorProject otherProject : reactorProjects) {
projects.put(otherProject.getBasedir(), otherProject);
}
if (resolverConfiguration != null) {
for (Dependency dependency : resolverConfiguration.getExtraRequirements()) {
try {
resolver.addDependency(dependency.getType(), dependency.getArtifactId(), dependency.getVersion());
} catch (IllegalArtifactReferenceException e) {
throw new BuildFailureException("Invalid extraRequirement " + dependency.getType() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ": " + e.getMessage(), e);
}
}
}
// get reactor project with prepared optional dependencies // TODO use original IU and have the resolver create the modified IUs
ReactorProject optionalDependencyPreparedProject = getThisReactorProject(session, project, configuration);
if (!isAllowConflictingDependencies(project, configuration)) {
List<P2ResolutionResult> results = resolver.resolveDependencies(targetPlatform, optionalDependencyPreparedProject);
MultiEnvironmentDependencyArtifacts multiPlatform = new MultiEnvironmentDependencyArtifacts(DefaultReactorProject.adapt(project));
// FIXME this is just wrong
for (int i = 0; i < configuration.getEnvironments().size(); i++) {
TargetEnvironment environment = configuration.getEnvironments().get(i);
P2ResolutionResult result = results.get(i);
DefaultDependencyArtifacts platform = newDefaultTargetPlatform(DefaultReactorProject.adapt(project), projects, result);
multiPlatform.addPlatform(environment, platform);
}
return multiPlatform;
} else {
P2ResolutionResult result = resolver.collectProjectDependencies(targetPlatform, optionalDependencyPreparedProject);
return newDefaultTargetPlatform(DefaultReactorProject.adapt(project), projects, result);
}
}
use of org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult in project tycho by eclipse.
the class P2DependencyResolver method newDefaultTargetPlatform.
protected DefaultDependencyArtifacts newDefaultTargetPlatform(ReactorProject project, Map<File, ReactorProject> projects, P2ResolutionResult result) {
DefaultDependencyArtifacts platform = new DefaultDependencyArtifacts(project);
platform.addNonReactorUnits(result.getNonReactorUnits());
for (P2ResolutionResult.Entry entry : result.getArtifacts()) {
ArtifactKey key = new DefaultArtifactKey(entry.getType(), entry.getId(), entry.getVersion());
ReactorProject otherProject = projects.get(entry.getLocation());
if (otherProject != null) {
platform.addReactorArtifact(key, otherProject, entry.getClassifier(), entry.getInstallableUnits());
} else {
platform.addArtifactFile(key, entry.getLocation(), entry.getInstallableUnits());
}
}
return platform;
}
use of org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult in project tycho by eclipse.
the class P2ResolverTest method getClassifiedArtifact.
private static P2ResolutionResult.Entry getClassifiedArtifact(P2ResolutionResult resolutionResult, String classifier) {
Set<String> availableClassifiers = new HashSet<>();
P2ResolutionResult.Entry selectedEntry = null;
for (Entry entry : resolutionResult.getArtifacts()) {
availableClassifiers.add(entry.getClassifier());
if (eq(classifier, entry.getClassifier())) {
selectedEntry = entry;
}
}
assertThat(availableClassifiers, hasItem(classifier));
return selectedEntry;
}
use of org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult in project tycho by eclipse.
the class P2ResolverImpl method resolveDependencies.
@Override
public List<P2ResolutionResult> resolveDependencies(TargetPlatform targetPlatform, ReactorProject project) {
setContext(targetPlatform, project);
if (project != null && PackagingType.TYPE_ECLIPSE_TEST_PLUGIN.equals(project.getPackaging())) {
addDependenciesForTests();
}
ArrayList<P2ResolutionResult> results = new ArrayList<>();
usedTargetPlatformUnits = new LinkedHashSet<>();
for (TargetEnvironment environment : environments) {
results.add(resolveDependencies(project, new ProjectorResolutionStrategy(logger), environment));
}
context.reportUsedLocalIUs(usedTargetPlatformUnits);
usedTargetPlatformUnits = null;
return results;
}
Aggregations