Blob Blame History Raw
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
index 2d7d3b9..3084fff 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
@@ -24,6 +24,7 @@ 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.URIUtil;
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
 import org.eclipse.equinox.p2.core.ProvisionException;
 import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -100,8 +101,11 @@ public class TargetDefinitionResolver {
 
                 List<IMetadataRepository> metadataRepositories = new ArrayList<IMetadataRepository>();
                 for (Repository repository : iuLocationDefinition.getRepositories()) {
-                    artifactRepositories.add(repository.getLocation());
-                    metadataRepositories.add(loadRepository(repository));
+                    // We cannot resolve a non-file URI in local mode
+                    if (System.getProperty("maven.local.mode") == null || URIUtil.isFileURI(repository.getLocation())) {
+                        artifactRepositories.add(repository.getLocation());
+                        metadataRepositories.add(loadRepository(repository));
+                    }
                 }
 
                 IQueryable<IInstallableUnit> locationUnits = new CompoundQueryable<IInstallableUnit>(
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
index 9da87bb..3d15c5e 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
@@ -255,6 +255,11 @@ public class TargetPlatformBuilderImpl implements TargetPlatformBuilder {
             return;
         }
 
+        // We cannot resolve a non-file URI in local mode
+        if (System.getProperty("maven.local.mode") != null && !URIUtil.isFileURI(location)) {
+            return;
+        }
+
         try {
             metadataRepository = metadataRepositoryManager.loadRepository(location, monitor);
             metadataRepositories.add(metadataRepository);
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
index 15b3fff..c8f14df 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
@@ -23,6 +23,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.JavadirWorkspaceReader;
 import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
@@ -38,6 +39,7 @@ import org.codehaus.plexus.util.FileUtils;
 import org.eclipse.sisu.equinox.embedder.EquinoxRuntimeLocator;
 import org.eclipse.tycho.locking.facade.FileLockService;
 import org.eclipse.tycho.locking.facade.FileLocker;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
 
 @Component(role = EquinoxRuntimeLocator.class)
 public class TychoP2RuntimeLocator implements EquinoxRuntimeLocator {
@@ -158,6 +160,21 @@ public class TychoP2RuntimeLocator implements EquinoxRuntimeLocator {
     }
 
     private File resolveArtifact(MavenSession session, Artifact artifact) throws MavenExecutionException {
+
+        // If we are in local mode, find the artifact on the system
+        if (System.getProperty("maven.local.mode") != null) {
+            JavadirWorkspaceReader wReader = new JavadirWorkspaceReader();
+            DefaultArtifact newArtifact = new DefaultArtifact(artifact.getGroupId()
+                    + ":" + artifact.getArtifactId()
+                    + ":" + artifact.getType()
+                    + ":" + artifact.getVersion());
+            File file = wReader.findArtifact(newArtifact);
+            if (file != null) {
+                artifact.setFile(file);
+                return file;
+            }
+        }
+
         List<ArtifactRepository> repositories = new ArrayList<ArtifactRepository>();
         for (MavenProject project : session.getProjects()) {
             repositories.addAll(project.getPluginArtifactRepositories());