| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with this |
| * work for additional information regarding copyright ownership. The ASF |
| * licenses this file to You 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 org.apache.sling.tooling.lc.aether; |
| |
| import java.io.File; |
| import java.util.Arrays; |
| import java.util.List; |
| |
| import org.apache.maven.repository.internal.MavenRepositorySystemUtils; |
| import org.eclipse.aether.DefaultRepositorySystemSession; |
| import org.eclipse.aether.RepositorySystem; |
| import org.eclipse.aether.artifact.DefaultArtifact; |
| 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.resolution.ArtifactRequest; |
| import org.eclipse.aether.resolution.ArtifactResolutionException; |
| import org.eclipse.aether.resolution.ArtifactResult; |
| import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; |
| import org.eclipse.aether.spi.connector.transport.TransporterFactory; |
| import org.eclipse.aether.transport.file.FileTransporterFactory; |
| import org.eclipse.aether.transport.http.HttpTransporterFactory; |
| |
| public class AetherSetup { |
| |
| private final List<RemoteRepository> repos = Arrays.asList( |
| new RemoteRepository.Builder("central", "default", "http://central.maven.org/maven2/").build(), |
| new RemoteRepository.Builder("apache", "default", "https://repository.apache.org/content/groups/snapshots/").build() |
| ); |
| |
| private final RepositorySystem system; |
| private final DefaultRepositorySystemSession session; |
| |
| |
| public AetherSetup() { |
| |
| DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); |
| locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); |
| locator.addService(TransporterFactory.class, FileTransporterFactory.class); |
| locator.addService(TransporterFactory.class, HttpTransporterFactory.class); |
| |
| system = locator.getService(RepositorySystem.class); |
| |
| session = MavenRepositorySystemUtils.newSession(); |
| |
| LocalRepository localRepo = new LocalRepository("target/local-repo"); |
| session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); |
| } |
| |
| |
| public File download(String coordinates) throws ArtifactResolutionException { |
| ArtifactResult fromResult = system.resolveArtifact(session, new ArtifactRequest(new DefaultArtifact(coordinates), repos, null)); |
| |
| return fromResult.getArtifact().getFile(); |
| } |
| } |