| // Copyright 2015 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.devtools.build.lib.bazel.repository; |
| |
| import org.apache.maven.model.Repository; |
| import org.apache.maven.repository.internal.MavenRepositorySystemUtils; |
| import org.eclipse.aether.AbstractRepositoryListener; |
| import org.eclipse.aether.DefaultRepositorySystemSession; |
| import org.eclipse.aether.RepositorySystem; |
| import org.eclipse.aether.RepositorySystemSession; |
| import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; |
| import org.eclipse.aether.impl.DefaultServiceLocator; |
| import org.eclipse.aether.repository.LocalRepository; |
| import org.eclipse.aether.repository.RemoteRepository; |
| import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; |
| import org.eclipse.aether.spi.connector.transport.TransporterFactory; |
| import org.eclipse.aether.transfer.AbstractTransferListener; |
| import org.eclipse.aether.transport.file.FileTransporterFactory; |
| import org.eclipse.aether.transport.http.HttpTransporterFactory; |
| |
| /** |
| * Connections to Maven repositories. |
| */ |
| public class MavenConnector { |
| public static final String MAVEN_CENTRAL_URL = "https://repo1.maven.org/maven2/"; |
| |
| private final String localRepositoryPath; |
| |
| public MavenConnector(String localRepositoryPath) { |
| this.localRepositoryPath = localRepositoryPath; |
| } |
| |
| public RepositorySystemSession newRepositorySystemSession(RepositorySystem system) { |
| DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); |
| LocalRepository localRepo = new LocalRepository(localRepositoryPath); |
| session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); |
| session.setTransferListener(new AbstractTransferListener() {}); |
| session.setRepositoryListener(new AbstractRepositoryListener() {}); |
| return session; |
| } |
| |
| public RepositorySystem newRepositorySystem() { |
| DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); |
| locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); |
| locator.addService(TransporterFactory.class, FileTransporterFactory.class); |
| locator.addService(TransporterFactory.class, HttpTransporterFactory.class); |
| return locator.getService(RepositorySystem.class); |
| } |
| |
| /** |
| * How is this not a built-in for aether? |
| */ |
| public static RemoteRepository getMavenCentralRemote() { |
| return new RemoteRepository.Builder( |
| "central", "default", MAVEN_CENTRAL_URL).build(); |
| } |
| |
| public static Repository getMavenCentral() { |
| Repository repository = new Repository(); |
| repository.setId("central"); |
| repository.setName("default"); |
| repository.setUrl(MAVEN_CENTRAL_URL); |
| return repository; |
| } |
| |
| } |