Исключение org.eclipse.aether.resolution.DependencyResolutionException: не удалось прочитать дескриптор артефакта для ch.qos.logback: logback-classi c: jar: 1.2.3 - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь получить все maven-зависимости данного артефакта программно, как указано в этом решении [1].

Я пытаюсь получить зависимости ch.qos.logback:logback-classic:1.2.3.

public static void main(final String[] args) throws Exception {
        DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
        RepositorySystem system = newRepositorySystem(locator);
        RepositorySystemSession session = newSession(system);

        RemoteRepository central = new RemoteRepository.Builder("central", "default", "http://repo1.maven.org/maven2/").build();

        String groupId = "ch.qos.logback";
        String artifactId = "logback-classic";
        String version = "1.2.3";
        String dep = groupId + ":" + artifactId + ":" + version;
        Artifact artifact = new DefaultArtifact(dep);

        CollectRequest collectRequest = new CollectRequest(new Dependency(artifact, JavaScopes.COMPILE), Arrays.asList(central));
        DependencyFilter filter = DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE);
        DependencyRequest request = new DependencyRequest(collectRequest, filter);
        DependencyResult result = system.resolveDependencies(session, request);

        for (ArtifactResult artifactResult : result.getArtifactResults()) {
            System.out.println(artifactResult.getArtifact().getFile());
        }
    }

    private static RepositorySystem newRepositorySystem(DefaultServiceLocator locator) {
        locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
        locator.addService(TransporterFactory.class, FileTransporterFactory.class);
        locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
        return locator.getService(RepositorySystem.class);
    }

    private static RepositorySystemSession newSession(RepositorySystem system) {
        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
        LocalRepository localRepo = new LocalRepository("target/local-repo");
        session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
        return session;
    }

Это ошибка трассировки стека, полученная при запуске метода main.

Exception in thread "main" org.eclipse.aether.resolution.DependencyResolutionException: Failed to read artifact descriptor for ch.qos.logback:logback-classic:jar:1.2.3
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:387)
    at sample.MavenResolver.main(MavenResolver.java:46)
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to read artifact descriptor for ch.qos.logback:logback-classic:jar:1.2.3
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:208)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:341)
    ... 1 more
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for ch.qos.logback:logback-classic:jar:1.2.3
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:282)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:198)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:202)
    ... 2 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact ch.qos.logback:logback-classic:pom:1.2.3 from/to central (http://repo1.maven.org/maven2/): HTTPS Required (501)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:267)
    ... 4 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact ch.qos.logback:logback-classic:pom:1.2.3 from/to central (http://repo1.maven.org/maven2/): HTTPS Required (501)
    at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
    at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
    ... 7 more
Caused by: org.apache.http.client.HttpResponseException: HTTPS Required (501)
    at org.eclipse.aether.transport.http.HttpTransporter.handleStatus(HttpTransporter.java:519)
    at org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:322)
    at org.eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:274)
    at org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
    ... 12 more

[1] Maven: программно получить все зависимости

1 Ответ

0 голосов
/ 19 марта 2020

Ошибка в следующей строке.

RemoteRepository central = new RemoteRepository.Builder("central", "default", "http://repo1.maven.org/maven2/").build();

Изменить URL репо http://repo1.maven.org/maven2/ на https://repo1.maven.org/maven2/

...