Search in sources :

Example 1 with IllegalArtifactReferenceException

use of org.eclipse.tycho.artifacts.IllegalArtifactReferenceException 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);
    }
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) IllegalArtifactReferenceException(org.eclipse.tycho.artifacts.IllegalArtifactReferenceException) BuildFailureException(org.eclipse.tycho.core.shared.BuildFailureException) ReactorProject(org.eclipse.tycho.ReactorProject) DefaultReactorProject(org.eclipse.tycho.core.osgitools.DefaultReactorProject) ComponentDependency(org.codehaus.plexus.component.repository.ComponentDependency) Dependency(org.apache.maven.model.Dependency) TargetEnvironment(org.eclipse.tycho.core.shared.TargetEnvironment) MultiEnvironmentDependencyArtifacts(org.eclipse.tycho.core.osgitools.targetplatform.MultiEnvironmentDependencyArtifacts) DefaultDependencyArtifacts(org.eclipse.tycho.core.osgitools.targetplatform.DefaultDependencyArtifacts) P2ResolutionResult(org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult) File(java.io.File)

Example 2 with IllegalArtifactReferenceException

use of org.eclipse.tycho.artifacts.IllegalArtifactReferenceException in project tycho by eclipse.

the class P2ResolverImpl method addDependency.

@Override
public void addDependency(String type, String id, String versionRange) throws IllegalArtifactReferenceException {
    final VersionRange parsedVersionRange;
    try {
        parsedVersionRange = new VersionRange(versionRange);
    } catch (IllegalArgumentException e) {
        throw new IllegalArtifactReferenceException("The string \"" + versionRange + "\" is not a valid OSGi version range");
    }
    additionalRequirements.add(ArtifactTypeHelper.createRequirementFor(type, id, parsedVersionRange));
}
Also used : IllegalArtifactReferenceException(org.eclipse.tycho.artifacts.IllegalArtifactReferenceException) VersionRange(org.eclipse.equinox.p2.metadata.VersionRange)

Example 3 with IllegalArtifactReferenceException

use of org.eclipse.tycho.artifacts.IllegalArtifactReferenceException in project tycho by eclipse.

the class ArtifactMatcher method resolveReference.

public static IInstallableUnit resolveReference(String type, String id, Version version, LinkedHashSet<IInstallableUnit> candidateUnits) throws IllegalArtifactReferenceException {
    if (id == null) {
        throw new IllegalArtifactReferenceException("ID is required");
    }
    VersionRange versionRange = getVersionRangeFromReference(version);
    IQuery<IInstallableUnit> query = QueryUtil.createLatestQuery(ArtifactTypeHelper.createQueryFor(type, id, versionRange));
    IQueryResult<IInstallableUnit> matchingIUs = query.perform(candidateUnits.iterator());
    if (matchingIUs.isEmpty()) {
        return null;
    } else {
        return matchingIUs.iterator().next();
    }
}
Also used : IllegalArtifactReferenceException(org.eclipse.tycho.artifacts.IllegalArtifactReferenceException) VersionRange(org.eclipse.equinox.p2.metadata.VersionRange) IInstallableUnit(org.eclipse.equinox.p2.metadata.IInstallableUnit)

Aggregations

IllegalArtifactReferenceException (org.eclipse.tycho.artifacts.IllegalArtifactReferenceException)3 VersionRange (org.eclipse.equinox.p2.metadata.VersionRange)2 File (java.io.File)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Dependency (org.apache.maven.model.Dependency)1 ComponentDependency (org.codehaus.plexus.component.repository.ComponentDependency)1 IInstallableUnit (org.eclipse.equinox.p2.metadata.IInstallableUnit)1 ReactorProject (org.eclipse.tycho.ReactorProject)1 DefaultReactorProject (org.eclipse.tycho.core.osgitools.DefaultReactorProject)1 DefaultDependencyArtifacts (org.eclipse.tycho.core.osgitools.targetplatform.DefaultDependencyArtifacts)1 MultiEnvironmentDependencyArtifacts (org.eclipse.tycho.core.osgitools.targetplatform.MultiEnvironmentDependencyArtifacts)1 BuildFailureException (org.eclipse.tycho.core.shared.BuildFailureException)1 TargetEnvironment (org.eclipse.tycho.core.shared.TargetEnvironment)1 P2ResolutionResult (org.eclipse.tycho.p2.resolver.facade.P2ResolutionResult)1