b81da61
From 824f4a6c2db4f229e43de0c217d00a0c2c5b723d Mon Sep 17 00:00:00 2001
9105146
From: Roland Grunberg <rgrunber@redhat.com>
9105146
Date: Wed, 18 Jun 2014 13:01:31 -0400
9105146
Subject: [PATCH] Tycho should always delegate artifact resolution to Maven.
9105146
9105146
Maven resolves dependencies from the following locations in the
9105146
following order:
9105146
    * reactor,
9105146
    * workspace (eg. XMvn),
9105146
    * local repository,
9105146
    * remote repositories.
9105146
9105146
Tycho assumes that all resolved artifacts are present within the reactor
9105146
cache but this is not true for artifacts resolved from workspace
9105146
locations.
9105146
ae5780c
Change-Id: Ia44969ed1064965a82c3507a63e54caeebb75b18
9105146
---
9105146
 .../META-INF/MANIFEST.MF                           |  1 +
b81da61
 .../eclipse/tycho/core/shared/MavenContext.java    |  2 +
b81da61
 .../tycho/core/shared/MavenContextImpl.java        | 10 ++++-
b81da61
 .../tycho/core/shared/MavenRepositorySystem.java   | 19 +++++++++
9105146
 .../local/LocalArtifactRepositoryP2APITest.java    |  4 +-
9105146
 .../local/LocalMetadataRepositoryTest.java         |  3 +-
9105146
 .../repository/local/LocalArtifactRepository.java  |  8 ++--
9105146
 .../local/LocalArtifactRepositoryFactory.java      |  3 +-
ae5780c
 .../local/index/LocalRepositoryP2IndicesImpl.java  |  7 ++++
9105146
 .../p2/remote/RemoteAgentMavenMirrorsTest.java     |  3 +-
9105146
 .../RemoteAgentMetadataRepositoryCacheTest.java    |  5 ++-
9105146
 .../target/TargetPlatformBundlePublisherTest.java  |  3 +-
9105146
 .../tycho/p2/target/TestResolverFactory.java       |  5 ++-
ae5780c
 .../tycho/p2/resolver/P2ResolverFactoryImpl.java   |  8 ++--
9105146
 .../p2/target/PomDependencyCollectorImpl.java      |  2 +-
ae5780c
 .../p2/target/TargetPlatformBundlePublisher.java   | 13 ++++--
9105146
 .../p2/repository/LocalRepositoryP2Indices.java    |  4 ++
ae5780c
 .../tycho/p2/repository/LocalRepositoryReader.java | 49 +++++-----------------
ae5780c
 .../testutil/TemporaryLocalMavenRepository.java    |  4 +-
ae5780c
 .../tycho/test/util/MavenRepositorySystemStub.java | 30 +++++++++++++
ae5780c
 .../adapters/MavenRepositorySystemAdapter.java     | 37 ++++++++++++++++
9105146
 .../configuration/MavenContextConfigurator.java    |  8 +++-
ae5780c
 22 files changed, 166 insertions(+), 62 deletions(-)
b81da61
 create mode 100644 tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java
ae5780c
 create mode 100644 tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java
9105146
 create mode 100644 tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java
9105146
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF
b81da61
index 9658fbc..efd0a2c 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF
9105146
+++ b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF
9105146
@@ -7,3 +7,4 @@ Fragment-Host: org.eclipse.tycho.core.shared
236cba3
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
9105146
 Require-Bundle: org.junit;bundle-version="4.8.2"
9105146
 Bundle-Vendor: %providerName
9105146
+Import-Package: org.eclipse.tycho.p2.repository
b81da61
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java
b81da61
index d63c1f1..cd8594d 100644
b81da61
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java
b81da61
+++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java
9105146
@@ -38,4 +38,6 @@ public interface MavenContext {
9105146
      */
9105146
     public Properties getSessionProperties();
9105146
 
9105146
+    public MavenRepositorySystem getRepositorySystem();
9105146
+
9105146
 }
b81da61
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java
b81da61
index 7b39d58..a15354f 100644
b81da61
--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java
b81da61
+++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java
9105146
@@ -19,18 +19,20 @@ public class MavenContextImpl implements MavenContext {
9105146
     private MavenLogger mavenLogger;
9105146
     private boolean offline;
9105146
     private Properties mergedProperties;
9105146
+    private MavenRepositorySystem repositorySystem;
9105146
 
9105146
     public MavenContextImpl(File localRepositoryRoot, boolean offline, MavenLogger mavenLogger,
9105146
-            Properties mergedProperties) {
9105146
+            Properties mergedProperties, MavenRepositorySystem repositorySystem) {
9105146
         this.localRepositoryRoot = localRepositoryRoot;
9105146
         this.offline = offline;
9105146
         this.mavenLogger = mavenLogger;
9105146
         this.mergedProperties = mergedProperties;
9105146
+        this.repositorySystem = repositorySystem;
9105146
     }
9105146
 
9105146
     // constructor for tests
9105146
     public MavenContextImpl(File localRepositoryRoot, MavenLogger mavenLogger) {
9105146
-        this(localRepositoryRoot, false, mavenLogger, new Properties());
9105146
+        this(localRepositoryRoot, false, mavenLogger, new Properties(), null);
9105146
     }
9105146
 
236cba3
     @Override
236cba3
@@ -53,4 +55,8 @@ public class MavenContextImpl implements MavenContext {
9105146
         return mergedProperties;
9105146
     }
9105146
 
9105146
+    public MavenRepositorySystem getRepositorySystem() {
9105146
+        return repositorySystem;
9105146
+    }
9105146
+
9105146
 }
b81da61
diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java
9105146
new file mode 100644
b81da61
index 0000000..965e5cd
9105146
--- /dev/null
b81da61
+++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java
9105146
@@ -0,0 +1,19 @@
9105146
+/*******************************************************************************
9105146
+ * Copyright (c) 2014 Red Hat Inc.
9105146
+ * All rights reserved. This program and the accompanying materials
9105146
+ * are made available under the terms of the Eclipse Public License v1.0
9105146
+ * which accompanies this distribution, and is available at
9105146
+ * http://www.eclipse.org/legal/epl-v10.html
9105146
+ *
9105146
+ * Contributors:
9105146
+ *     Red Hat Inc. - initial API and implementation
9105146
+ *******************************************************************************/
b81da61
+package org.eclipse.tycho.core.shared;
9105146
+
9105146
+import java.io.File;
9105146
+
9105146
+public interface MavenRepositorySystem {
9105146
+
9105146
+    public File resolve(String gid, String aid, String version, String type, String classifier);
9105146
+
9105146
+}
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java
ae5780c
index bedc5cb..7df3d17 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java
ae5780c
@@ -53,6 +53,7 @@ import org.eclipse.tycho.repository.p2base.artifact.repository.ArtifactRepositor
ae5780c
 import org.eclipse.tycho.repository.streaming.testutil.ProbeArtifactSink;
ae5780c
 import org.eclipse.tycho.repository.streaming.testutil.ProbeOutputStream;
ae5780c
 import org.eclipse.tycho.repository.streaming.testutil.ProbeRawArtifactSink;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
ae5780c
 import org.junit.After;
ae5780c
 import org.junit.Before;
ae5780c
 import org.junit.Rule;
9105146
@@ -114,7 +115,8 @@ public class LocalArtifactRepositoryP2APITest {
9105146
     @Before
9105146
     public void initSubject() throws Exception {
9105146
         temporaryLocalMavenRepo.initContentFromResourceFolder(ResourceUtil.resourceFile("repositories/local"));
9105146
-        subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex());
9105146
+        subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex(),
9105146
+                new MavenRepositorySystemStub(temporaryLocalMavenRepo.getLocalRepositoryRoot()));
9105146
 
9105146
         testOutputStream = new ProbeOutputStream();
9105146
     }
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java
ae5780c
index 9b6d270..8779841 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java
9105146
@@ -32,6 +32,7 @@ import org.eclipse.tycho.p2.repository.LocalRepositoryReader;
9105146
 import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper;
9105146
 import org.eclipse.tycho.p2.repository.TychoRepositoryIndex;
9105146
 import org.eclipse.tycho.repository.local.index.FileBasedTychoRepositoryIndex;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
9105146
 import org.junit.Test;
9105146
 
9105146
 public class LocalMetadataRepositoryTest extends BaseMavenRepositoryTest {
9105146
@@ -48,7 +49,7 @@ public class LocalMetadataRepositoryTest extends BaseMavenRepositoryTest {
9105146
 
9105146
     protected IMetadataRepository loadRepository(File location) throws ProvisionException {
9105146
         return new LocalMetadataRepository(location.toURI(), createMetadataIndex(location), new LocalRepositoryReader(
9105146
-                location));
ae5780c
+                location, new MavenRepositorySystemStub(location)));
9105146
     }
9105146
 
9105146
     private LocalMetadataRepository createRepository(File location) throws ProvisionException {
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java
b81da61
index 36946bf..0e2d330 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java
9105146
@@ -23,6 +23,7 @@ import java.util.Set;
9105146
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
9105146
 import org.eclipse.equinox.p2.metadata.IArtifactKey;
9105146
 import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
 import org.eclipse.tycho.p2.maven.repository.Activator;
9105146
 import org.eclipse.tycho.p2.maven.repository.xmlio.ArtifactsIO;
9105146
 import org.eclipse.tycho.p2.repository.GAV;
9105146
@@ -42,15 +43,16 @@ public class LocalArtifactRepository extends ArtifactRepositoryBaseImpl
9105146
 
9105146
     // TODO what is the agent needed for? does using the default agent harm?
9105146
     public LocalArtifactRepository(LocalRepositoryP2Indices localRepoIndices) {
9105146
-        this(Activator.getProvisioningAgent(), localRepoIndices);
9105146
+        this(Activator.getProvisioningAgent(), localRepoIndices, (MavenRepositorySystem) null);
9105146
     }
9105146
 
9105146
     public LocalArtifactRepository(LocalRepositoryP2Indices localRepoIndices, RepositoryReader contentLocator) {
9105146
         this(Activator.getProvisioningAgent(), localRepoIndices, contentLocator);
9105146
     }
9105146
 
9105146
-    public LocalArtifactRepository(IProvisioningAgent agent, LocalRepositoryP2Indices localRepoIndices) {
9105146
-        this(agent, localRepoIndices, new LocalRepositoryReader(localRepoIndices.getBasedir()));
9105146
+    public LocalArtifactRepository(IProvisioningAgent agent, LocalRepositoryP2Indices localRepoIndices,
9105146
+            MavenRepositorySystem repositorySystem) {
9105146
+        this(agent, localRepoIndices, new LocalRepositoryReader(localRepoIndices.getBasedir(), repositorySystem));
9105146
     }
9105146
 
9105146
     public LocalArtifactRepository(IProvisioningAgent agent, LocalRepositoryP2Indices localRepoIndices,
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryFactory.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryFactory.java
b81da61
index fc99483..be2ce88 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryFactory.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryFactory.java
9105146
@@ -18,6 +18,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
9105146
 import org.eclipse.equinox.p2.core.ProvisionException;
9105146
 import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
9105146
 import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactRepositoryFactory;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
 import org.eclipse.tycho.p2.maven.repository.Activator;
9105146
 import org.eclipse.tycho.p2.repository.LocalRepositoryP2Indices;
9105146
 import org.eclipse.tycho.repository.util.internal.RepositoryFactoryTools;
9105146
@@ -41,7 +42,7 @@ public class LocalArtifactRepositoryFactory extends ArtifactRepositoryFactory {
9105146
             if (localRepositoryDirectory.isDirectory()
9105146
                     && new File(localRepositoryDirectory, ".meta/p2-artifacts.properties").exists()) {
9105146
                 // see FileBasedTychoRepositoryIndex#ARTIFACTS_INDEX_RELPATH
9105146
-                return new LocalArtifactRepository(getAgent(), lookupLocalRepoIndices());
9105146
+                return new LocalArtifactRepository(getAgent(), lookupLocalRepoIndices(), lookupLocalRepoIndices().getRepositorySystem());
9105146
             }
9105146
         }
9105146
         return null;
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/index/LocalRepositoryP2IndicesImpl.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/index/LocalRepositoryP2IndicesImpl.java
b81da61
index 2a746f2..7b9983a 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/index/LocalRepositoryP2IndicesImpl.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/index/LocalRepositoryP2IndicesImpl.java
236cba3
@@ -15,6 +15,7 @@ package org.eclipse.tycho.repository.local.index;
9105146
 
b81da61
 import org.eclipse.tycho.core.shared.MavenContext;
236cba3
 import org.eclipse.tycho.core.shared.MavenLogger;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
 import org.eclipse.tycho.locking.facade.FileLockService;
9105146
 import org.eclipse.tycho.p2.repository.LocalRepositoryP2Indices;
9105146
 import org.eclipse.tycho.p2.repository.TychoRepositoryIndex;
236cba3
@@ -25,6 +26,7 @@ public class LocalRepositoryP2IndicesImpl implements LocalRepositoryP2Indices {
9105146
     private FileLockService fileLockService;
9105146
     private File localRepositoryRoot;
236cba3
     private MavenLogger logger;
9105146
+    private MavenRepositorySystem repoSystem;
9105146
 
9105146
     // derived members
9105146
     private boolean initialized = false;
236cba3
@@ -39,6 +41,7 @@ public class LocalRepositoryP2IndicesImpl implements LocalRepositoryP2Indices {
9105146
     public void setMavenContext(MavenContext mavenContext) {
9105146
         this.localRepositoryRoot = mavenContext.getLocalRepositoryRoot();
236cba3
         this.logger = mavenContext.getLogger();
9105146
+        this.repoSystem = mavenContext.getRepositorySystem();
9105146
     }
9105146
 
9105146
     // injected by DS runtime
236cba3
@@ -80,4 +83,8 @@ public class LocalRepositoryP2IndicesImpl implements LocalRepositoryP2Indices {
9105146
         return localRepositoryRoot;
9105146
     }
9105146
 
9105146
+    public MavenRepositorySystem getRepositorySystem() {
9105146
+        return repoSystem;
9105146
+    }
9105146
+
9105146
 }
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMavenMirrorsTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMavenMirrorsTest.java
b81da61
index 432ec09..4e5566a 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMavenMirrorsTest.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMavenMirrorsTest.java
ae5780c
@@ -29,6 +29,7 @@ import org.eclipse.tycho.p2.impl.test.ResourceUtil;
ae5780c
 import org.eclipse.tycho.p2.remote.testutil.MavenRepositorySettingsStub;
9105146
 import org.eclipse.tycho.test.util.HttpServer;
9105146
 import org.eclipse.tycho.test.util.LogVerifier;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
ae5780c
 import org.junit.Before;
ae5780c
 import org.junit.Rule;
ae5780c
 import org.junit.Test;
ae5780c
@@ -52,7 +53,7 @@ public class RemoteAgentMavenMirrorsTest {
9105146
     public void initSubject() throws Exception {
9105146
         File localRepository = tempManager.newFolder("localRepo");
9105146
         MavenContext mavenContext = new MavenContextImpl(localRepository, OFFLINE, logVerifier.getLogger(),
9105146
-                new Properties());
9105146
+                new Properties(), new MavenRepositorySystemStub(localRepository));
9105146
 
9105146
         mavenRepositorySettings = new MavenRepositorySettingsStub();
9105146
         subject = new RemoteAgent(mavenContext, mavenRepositorySettings, OFFLINE);
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMetadataRepositoryCacheTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMetadataRepositoryCacheTest.java
b81da61
index ae31862..14b8f85 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMetadataRepositoryCacheTest.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/remote/RemoteAgentMetadataRepositoryCacheTest.java
ae5780c
@@ -26,6 +26,7 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
b81da61
 import org.eclipse.tycho.core.shared.MavenContextImpl;
9105146
 import org.eclipse.tycho.test.util.HttpServer;
9105146
 import org.eclipse.tycho.test.util.LogVerifier;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
9105146
 import org.junit.Before;
ae5780c
 import org.junit.Rule;
ae5780c
 import org.junit.Test;
9105146
@@ -126,12 +127,12 @@ public class RemoteAgentMetadataRepositoryCacheTest {
9105146
 
9105146
     private RemoteAgent newOnlineAgent() throws Exception {
9105146
         return new RemoteAgent(new MavenContextImpl(localMavenRepository, false, logVerifier.getLogger(),
9105146
-                new Properties()));
9105146
+                new Properties(), new MavenRepositorySystemStub(localMavenRepository)));
9105146
     }
9105146
 
9105146
     private RemoteAgent newOfflineAgent() throws Exception {
9105146
         return new RemoteAgent(new MavenContextImpl(localMavenRepository, true, logVerifier.getLogger(),
9105146
-                new Properties()));
9105146
+                new Properties(), new MavenRepositorySystemStub(localMavenRepository)));
9105146
     }
9105146
 
9105146
     private IMetadataRepository loadHttpRepository(RemoteAgent agent) throws ProvisionException {
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisherTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisherTest.java
ae5780c
index 50fe92f..3044e97 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisherTest.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisherTest.java
ae5780c
@@ -31,6 +31,7 @@ import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper;
9105146
 import org.eclipse.tycho.repository.p2base.artifact.provider.IRawArtifactProvider;
9105146
 import org.eclipse.tycho.repository.streaming.testutil.ProbeRawArtifactSink;
9105146
 import org.eclipse.tycho.test.util.LogVerifier;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
ae5780c
 import org.junit.Before;
ae5780c
 import org.junit.Rule;
ae5780c
 import org.junit.Test;
9105146
@@ -56,7 +57,7 @@ public class TargetPlatformBundlePublisherTest {
9105146
         logVerifier.expectNoWarnings();
9105146
 
9105146
         localRepositoryRoot = tempFolder.getRoot();
9105146
-        subject = new TargetPlatformBundlePublisher(localRepositoryRoot, logVerifier.getLogger());
9105146
+        subject = new TargetPlatformBundlePublisher(localRepositoryRoot, logVerifier.getLogger(), new MavenRepositorySystemStub(localRepositoryRoot));
9105146
     }
9105146
 
9105146
     @Test
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TestResolverFactory.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TestResolverFactory.java
b81da61
index d982042..127ae11 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TestResolverFactory.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TestResolverFactory.java
9105146
@@ -28,6 +28,7 @@ import org.eclipse.tycho.p2.target.facade.TargetPlatformFactory;
9105146
 import org.eclipse.tycho.repository.local.LocalArtifactRepository;
9105146
 import org.eclipse.tycho.repository.local.LocalMetadataRepository;
9105146
 import org.eclipse.tycho.repository.local.index.LocalRepositoryP2IndicesImpl;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
9105146
 import org.eclipse.tycho.test.util.NoopFileLockService;
9105146
 
9105146
 public class TestResolverFactory implements P2ResolverFactory {
9105146
@@ -45,7 +46,7 @@ public class TestResolverFactory implements P2ResolverFactory {
9105146
 
9105146
         File localMavenRepoRoot = mavenContext.getLocalRepositoryRoot();
9105146
         LocalRepositoryP2Indices localRepoIndices = createLocalRepoIndices(mavenContext);
9105146
-        LocalRepositoryReader localRepositoryReader = new LocalRepositoryReader(localMavenRepoRoot);
9105146
+        LocalRepositoryReader localRepositoryReader = new LocalRepositoryReader(localMavenRepoRoot, mavenContext.getRepositorySystem());
9105146
         localMetadataRepo = new LocalMetadataRepository(localMavenRepoRoot.toURI(),
9105146
                 localRepoIndices.getMetadataIndex(), localRepositoryReader);
9105146
         localArtifactRepo = new LocalArtifactRepository(localRepoIndices, localRepositoryReader);
9105146
@@ -56,7 +57,7 @@ public class TestResolverFactory implements P2ResolverFactory {
9105146
     }
9105146
 
9105146
     private MavenContext createMavenContext(boolean offline, MavenLogger logger) {
9105146
-        return new MavenContextImpl(getLocalRepositoryLocation(), offline, logger, new Properties());
9105146
+        return new MavenContextImpl(getLocalRepositoryLocation(), offline, logger, new Properties(), new MavenRepositorySystemStub(getLocalRepositoryLocation()));
9105146
     }
9105146
 
9105146
     // TODO use TemporaryLocalMavenRepository
ae5780c
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/resolver/P2ResolverFactoryImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/resolver/P2ResolverFactoryImpl.java
b81da61
index a74d4d5..2f903a1 100644
ae5780c
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/resolver/P2ResolverFactoryImpl.java
ae5780c
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/resolver/P2ResolverFactoryImpl.java
9105146
@@ -33,7 +33,7 @@ public class P2ResolverFactoryImpl implements P2ResolverFactory {
9105146
     private static LocalMetadataRepository localMetadataRepository;
9105146
     private static LocalArtifactRepository localArtifactRepository;
9105146
 
9105146
-    private MavenContext mavenContext;
9105146
+    private static MavenContext mavenContext;
9105146
     private LocalRepositoryP2Indices localRepoIndices;
9105146
     private RemoteAgentManager remoteAgentManager;
9105146
     private TargetDefinitionResolverService targetDefinitionResolverService;
9105146
@@ -42,7 +42,8 @@ public class P2ResolverFactoryImpl implements P2ResolverFactory {
9105146
             LocalRepositoryP2Indices localRepoIndices) {
9105146
         if (localMetadataRepository == null) {
9105146
             File localMavenRepoRoot = context.getLocalRepositoryRoot();
9105146
-            RepositoryReader contentLocator = new LocalRepositoryReader(localMavenRepoRoot);
9105146
+            RepositoryReader contentLocator = new LocalRepositoryReader(localMavenRepoRoot,
9105146
+                    mavenContext.getRepositorySystem());
9105146
             localMetadataRepository = new LocalMetadataRepository(localMavenRepoRoot.toURI(),
9105146
                     localRepoIndices.getMetadataIndex(), contentLocator);
9105146
 
9105146
@@ -53,7 +54,8 @@ public class P2ResolverFactoryImpl implements P2ResolverFactory {
9105146
     private static synchronized LocalArtifactRepository getLocalArtifactRepository(MavenContext mavenContext,
9105146
             LocalRepositoryP2Indices localRepoIndices) {
9105146
         if (localArtifactRepository == null) {
9105146
-            RepositoryReader contentLocator = new LocalRepositoryReader(mavenContext.getLocalRepositoryRoot());
9105146
+            RepositoryReader contentLocator = new LocalRepositoryReader(mavenContext.getLocalRepositoryRoot(),
9105146
+                    mavenContext.getRepositorySystem());
9105146
             localArtifactRepository = new LocalArtifactRepository(localRepoIndices, contentLocator);
9105146
         }
9105146
         return localArtifactRepository;
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/PomDependencyCollectorImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/PomDependencyCollectorImpl.java
b81da61
index 8bee7ba..f2b07a5 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/PomDependencyCollectorImpl.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/PomDependencyCollectorImpl.java
ae5780c
@@ -44,7 +44,7 @@ public class PomDependencyCollectorImpl implements PomDependencyCollector {
9105146
         this.logger = mavenContext.getLogger();
9105146
 
9105146
         File localRepositoryRoot = mavenContext.getLocalRepositoryRoot();
9105146
-        this.bundlesPublisher = new TargetPlatformBundlePublisher(localRepositoryRoot, mavenContext.getLogger());
9105146
+        this.bundlesPublisher = new TargetPlatformBundlePublisher(localRepositoryRoot, mavenContext.getLogger(), mavenContext.getRepositorySystem());
9105146
     }
9105146
 
236cba3
     @Override
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java
b81da61
index 0195871..44a0f30 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java
9105146
@@ -25,6 +25,7 @@ import org.eclipse.equinox.p2.publisher.PublisherResult;
9105146
 import org.eclipse.equinox.p2.publisher.eclipse.BundlesAction;
9105146
 import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor;
b81da61
 import org.eclipse.tycho.core.shared.MavenLogger;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
 import org.eclipse.tycho.p2.impl.publisher.MavenPropertiesAdvice;
9105146
 import org.eclipse.tycho.p2.impl.publisher.repo.TransientArtifactRepository;
9105146
 import org.eclipse.tycho.p2.metadata.IArtifactFacade;
ae5780c
@@ -42,8 +43,9 @@ public class TargetPlatformBundlePublisher {
9105146
     private final MavenLogger logger;
9105146
     private final PublishedBundlesArtifactRepository publishedArtifacts;
9105146
 
9105146
-    public TargetPlatformBundlePublisher(File localMavenRepositoryRoot, MavenLogger logger) {
9105146
-        this.publishedArtifacts = new PublishedBundlesArtifactRepository(localMavenRepositoryRoot);
ae5780c
+    public TargetPlatformBundlePublisher(File localMavenRepositoryRoot, MavenLogger logger,
ae5780c
+            MavenRepositorySystem repositorySystem) {
9105146
+        this.publishedArtifacts = new PublishedBundlesArtifactRepository(localMavenRepositoryRoot, repositorySystem);
9105146
         this.logger = logger;
9105146
     }
9105146
 
ae5780c
@@ -206,8 +208,11 @@ public class TargetPlatformBundlePublisher {
9105146
      */
9105146
     private static class PublishedBundlesArtifactRepository extends ArtifactRepositoryBaseImpl<GAVArtifactDescriptor> {
9105146
 
9105146
-        PublishedBundlesArtifactRepository(File localMavenRepositoryRoot) {
9105146
+        private MavenRepositorySystem repositorySystem;
9105146
+
9105146
+        PublishedBundlesArtifactRepository(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) {
9105146
             super(null, localMavenRepositoryRoot.toURI(), ArtifactTransferPolicies.forLocalArtifacts());
9105146
+            this.repositorySystem = repositorySystem;
9105146
         }
9105146
 
9105146
         void addPublishedArtifact(IArtifactDescriptor baseDescriptor, IArtifactFacade mavenArtifact) {
ae5780c
@@ -252,7 +257,7 @@ public class TargetPlatformBundlePublisher {
9105146
         @Override
9105146
         protected File internalGetArtifactStorageLocation(IArtifactDescriptor descriptor) {
9105146
             MavenRepositoryCoordinates coord = toInternalDescriptor(descriptor).getMavenCoordinates();
9105146
-            LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir());
9105146
+            LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir(), repositorySystem);
ae5780c
             return reader.getLocalArtifactLocation(coord.getGav(), coord.getClassifier(), coord.getExtensionOrDefault());
9105146
         }
9105146
 
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java
b81da61
index 2122578..5e4a01e 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java
9105146
@@ -13,6 +13,8 @@ package org.eclipse.tycho.p2.repository;
9105146
 
9105146
 import java.io.File;
9105146
 
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
+
9105146
 /**
9105146
  * This service provides access to the tycho p2 index files of the local maven repository.
9105146
  */
9105146
@@ -24,4 +26,6 @@ public interface LocalRepositoryP2Indices {
9105146
 
9105146
     public File getBasedir();
9105146
 
9105146
+    public MavenRepositorySystem getRepositorySystem();
9105146
+
9105146
 }
9105146
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java
b81da61
index b5c8c55..8842af3 100644
9105146
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java
9105146
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java
236cba3
@@ -14,55 +14,28 @@ import java.io.File;
ae5780c
 import java.lang.reflect.Constructor;
ae5780c
 import java.lang.reflect.Method;
9105146
 
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
ae5780c
+
9105146
 public class LocalRepositoryReader implements RepositoryReader {
9105146
 
b41d1a7
     private final File localMavenRepositoryRoot;
9105146
+    private final MavenRepositorySystem repositorySystem;
9105146
 
9105146
-    public LocalRepositoryReader(File localMavenRepositoryRoot) {
9105146
+    public LocalRepositoryReader(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) {
b41d1a7
         this.localMavenRepositoryRoot = localMavenRepositoryRoot;
9105146
+        this.repositorySystem = repositorySystem;
9105146
     }
9105146
 
236cba3
     @Override
ae5780c
     @SuppressWarnings({ "unchecked", "rawtypes" })
9105146
     public File getLocalArtifactLocation(GAV gav, String classifier, String extension) {
9105146
-        File file = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier,
9105146
-                extension));
9105146
-        // In Fedora the artifact may be in an XMvn-defined repository location (not in reactor cache)
9105146
-        if (!file.exists()) {
9105146
-            try {
9105146
-                // Create Plexus config
9105146
-                Class pcclazz = Class.forName("org.codehaus.plexus.ContainerConfiguration");
9105146
-                Object conf = Class.forName("org.codehaus.plexus.DefaultContainerConfiguration").newInstance();
9105146
-                pcclazz.getMethod("setAutoWiring", boolean.class).invoke(conf, true);
9105146
-                pcclazz.getMethod("setClassPathScanning", String.class).invoke(conf, "index");
9105146
-
9105146
-                // Use plexus container to lookup the reader
9105146
-                Class pclazz = Class.forName("org.codehaus.plexus.DefaultPlexusContainer");
9105146
-                Object plexus = pclazz.getConstructor(pcclazz).newInstance(conf);
9105146
-
9105146
-                // Retrieve the workspace reader from the plexus container
9105146
-                Method mLookup = pclazz.getMethod("lookup", String.class, String.class);
9105146
-                Object reader = mLookup.invoke(plexus, "org.eclipse.aether.repository.WorkspaceReader", "ide");
9105146
-
9105146
-                // Create an Aether Artifact based on GAV, classifier, and extension
9105146
-                Class iartclazz = Class.forName("org.eclipse.aether.artifact.Artifact");
9105146
-                Class artclazz = Class.forName("org.eclipse.aether.artifact.DefaultArtifact");
9105146
-                Constructor cNew = artclazz.getConstructor(String.class, String.class, String.class, String.class,
9105146
-                        String.class);
9105146
-                Object artifact = cNew.newInstance(gav.getGroupId(), gav.getArtifactId(), classifier, extension,
9105146
-                        gav.getVersion());
9105146
-
9105146
-                // Invoke "findArtifact" method of the workspace reader on the artifact
9105146
-                Method mfindArtifact = reader.getClass().getMethod("findArtifact", iartclazz);
9105146
-                File newFile = (File) mfindArtifact.invoke(reader, artifact);
9105146
-                if (newFile != null) {
9105146
-                    file = newFile;
9105146
-                }
9105146
-            } catch (Exception e) {
9105146
-                e.printStackTrace();
b41d1a7
+        File ret = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, extension));
b41d1a7
+        if (repositorySystem != null) {
b41d1a7
+            File tmp = repositorySystem.resolve(gav.getGroupId(), gav.getArtifactId(), gav.getVersion(), extension, classifier);
b41d1a7
+            if (tmp != null) {
b41d1a7
+                ret = tmp;
b41d1a7
             }
b41d1a7
         }
9105146
-        return file;
9105146
-
b41d1a7
+        return ret;
9105146
     }
9105146
 }
ae5780c
diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java
b81da61
index f7cc92c..7bc8a95 100644
ae5780c
--- a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java
ae5780c
+++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java
ae5780c
@@ -14,9 +14,11 @@ import java.io.File;
ae5780c
 import java.io.IOException;
ae5780c
 
ae5780c
 import org.eclipse.equinox.internal.p2.core.helpers.FileUtils;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
ae5780c
 import org.eclipse.tycho.p2.repository.LocalRepositoryP2Indices;
ae5780c
 import org.eclipse.tycho.repository.local.LocalArtifactRepository;
ae5780c
 import org.eclipse.tycho.repository.local.index.LocalRepositoryP2IndicesImpl;
ae5780c
+import org.eclipse.tycho.test.util.MavenRepositorySystemStub;
ae5780c
 import org.eclipse.tycho.test.util.NoopFileLockService;
ae5780c
 import org.junit.Rule;
ae5780c
 import org.junit.rules.ExternalResource;
ae5780c
@@ -72,7 +74,7 @@ public class TemporaryLocalMavenRepository extends ExternalResource {
ae5780c
 
ae5780c
     public LocalArtifactRepository getLocalArtifactRepository() {
ae5780c
         if (repo == null) {
ae5780c
-            repo = new LocalArtifactRepository(null, getLocalRepositoryIndex());
ae5780c
+            repo = new LocalArtifactRepository(null, getLocalRepositoryIndex(), new MavenRepositorySystemStub(getLocalRepositoryRoot()));
ae5780c
         }
ae5780c
         return repo;
ae5780c
     }
ae5780c
diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java
9105146
new file mode 100644
b81da61
index 0000000..7e020da
9105146
--- /dev/null
ae5780c
+++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java
9105146
@@ -0,0 +1,30 @@
9105146
+/*******************************************************************************
9105146
+ * Copyright (c) 2014 Red Hat Inc.
9105146
+ * All rights reserved. This program and the accompanying materials
9105146
+ * are made available under the terms of the Eclipse Public License v1.0
9105146
+ * which accompanies this distribution, and is available at
9105146
+ * http://www.eclipse.org/legal/epl-v10.html
9105146
+ *
9105146
+ * Contributors:
9105146
+ *     Red Hat Inc. - initial API and implementation
9105146
+ *******************************************************************************/
ae5780c
+package org.eclipse.tycho.test.util;
9105146
+
9105146
+import java.io.File;
9105146
+
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
+import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper;
9105146
+
9105146
+public class MavenRepositorySystemStub implements MavenRepositorySystem {
9105146
+
9105146
+    private File localMavenRepositoryRoot;
9105146
+
9105146
+    public MavenRepositorySystemStub(File localMavenRepositoryRoot) {
9105146
+        this.localMavenRepositoryRoot = localMavenRepositoryRoot;
9105146
+    }
9105146
+
9105146
+    public File resolve(String gid, String aid, String version, String type, String classifier) {
9105146
+        return new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gid, aid, version, classifier,
9105146
+                type));
9105146
+    }
9105146
+}
9105146
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java
9105146
new file mode 100644
b81da61
index 0000000..e1d46fa
9105146
--- /dev/null
9105146
+++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java
9105146
@@ -0,0 +1,37 @@
9105146
+/*******************************************************************************
9105146
+ * Copyright (c) 2014 Red Hat Inc.
9105146
+ * All rights reserved. This program and the accompanying materials
9105146
+ * are made available under the terms of the Eclipse Public License v1.0
9105146
+ * which accompanies this distribution, and is available at
9105146
+ * http://www.eclipse.org/legal/epl-v10.html
9105146
+ *
9105146
+ * Contributors:
9105146
+ *     Red Hat Inc. - initial API and implementation
9105146
+ *******************************************************************************/
9105146
+package org.eclipse.tycho.osgi.adapters;
9105146
+
9105146
+import java.io.File;
9105146
+
9105146
+import org.apache.maven.artifact.Artifact;
9105146
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
9105146
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
9105146
+import org.apache.maven.repository.RepositorySystem;
b81da61
+import org.eclipse.tycho.core.shared.MavenRepositorySystem;
9105146
+
9105146
+public class MavenRepositorySystemAdapter implements MavenRepositorySystem {
9105146
+
9105146
+    private RepositorySystem repoSystem;
9105146
+
9105146
+    public MavenRepositorySystemAdapter(RepositorySystem repoSystem) {
9105146
+        this.repoSystem = repoSystem;
9105146
+    }
9105146
+
9105146
+    public File resolve(String gid, String aid, String version, String type, String classifier) {
9105146
+        ArtifactResolutionRequest req = new ArtifactResolutionRequest();
9105146
+        Artifact art = repoSystem.createArtifactWithClassifier(gid, aid, version, type, classifier);
9105146
+        req.setArtifact(art);
9105146
+        ArtifactResolutionResult res = repoSystem.resolve(req);
9105146
+        return res.getArtifacts().size() > 0 ? res.getArtifacts().toArray(new Artifact[0])[0].getFile() : null;
9105146
+    }
9105146
+
9105146
+}
9105146
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java
b81da61
index e5837e2..137dcb1 100644
9105146
--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java
9105146
+++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java
9105146
@@ -16,6 +16,7 @@ import java.util.Properties;
9105146
 
9105146
 import org.apache.maven.execution.MavenSession;
9105146
 import org.apache.maven.plugin.LegacySupport;
9105146
+import org.apache.maven.repository.RepositorySystem;
9105146
 import org.apache.maven.settings.Profile;
9105146
 import org.apache.maven.settings.Settings;
9105146
 import org.codehaus.plexus.component.annotations.Component;
9105146
@@ -26,6 +27,7 @@ import org.eclipse.sisu.equinox.embedder.EquinoxLifecycleListener;
b81da61
 import org.eclipse.tycho.core.shared.MavenContext;
b81da61
 import org.eclipse.tycho.core.shared.MavenContextImpl;
9105146
 import org.eclipse.tycho.osgi.adapters.MavenLoggerAdapter;
9105146
+import org.eclipse.tycho.osgi.adapters.MavenRepositorySystemAdapter;
9105146
 
9105146
 @Component(role = EquinoxLifecycleListener.class, hint = "MavenContextConfigurator")
9105146
 public class MavenContextConfigurator extends EquinoxLifecycleListener {
9105146
@@ -36,13 +38,17 @@ public class MavenContextConfigurator extends EquinoxLifecycleListener {
9105146
     @Requirement
9105146
     private LegacySupport context;
9105146
 
9105146
+    @Requirement
9105146
+    private RepositorySystem repositorySystem;
9105146
+
9105146
     @Override
9105146
     public void afterFrameworkStarted(EmbeddedEquinox framework) {
9105146
         MavenSession session = context.getSession();
9105146
         File localRepoRoot = new File(session.getLocalRepository().getBasedir());
9105146
         MavenLoggerAdapter mavenLogger = new MavenLoggerAdapter(logger, false);
9105146
         Properties globalProps = getGlobalProperties(session);
9105146
-        MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps);
9105146
+        MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps,
9105146
+                new MavenRepositorySystemAdapter(repositorySystem));
9105146
         framework.registerService(MavenContext.class, mavenContext);
9105146
     }
9105146
 
9105146
-- 
9105146
1.9.3
9105146