Список доступных версий от Sonatype Nexus с Aether-API

Моя цель - разработать внутренний инструмент для развертывания артефактов. Артефакты находятся в локальной системе управления хранилищами (sonatype nexus). После исследования я попытался реализовать задачу с помощью Aether-Api. Но мне не удалось перепрограммировать один из их примеров в моем собственном. Я не могу оценить ошибку.

public class SourceMaven 
{
    private static 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);        
    }
    private static RepositorySystemSession newSession(RepositorySystem system)
    {
        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
        LocalRepository localRepo = new LocalRepository("/usr/local/home/myusername/tmp/aether");
        session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));

        return session;        
    }
    private static List<RemoteRepository> newRepositories( RepositorySystem system, RepositorySystemSession session)
    {
        return new ArrayList<RemoteRepository>(Arrays.asList(newCentralRepository()));
    }
    private static RemoteRepository newCentralRepository()
    {
        return new RemoteRepository.Builder("sonanexus", "default", "http://ournexusservername:8081/nexus/#nexus").build();
    }


    public List<String> getReleaseList(String url) 
    {
        RepositorySystem system = newRepositorySystem();
        RepositorySystemSession session = newSession(system);

        Artifact artifact = new DefaultArtifact("org.eclipse.aether:aether-util:[0,)");

        VersionRangeRequest rangeRequest = new VersionRangeRequest();
        rangeRequest.setArtifact(artifact);
        rangeRequest.setRepositories(newRepositories(system, session));

        try 
        {
            VersionRangeResult rangeResult = system.resolveVersionRange(session, rangeRequest);
            List<Version> versions = rangeResult.getVersions();

            System.out.println("available versions " + versions);
        } 
            catch (VersionRangeResolutionException ex) 
        {
            System.out.println("failed ...");
        }

        return null;
    }
}

В качестве вывода я получаю только пустой список без ошибки.

доступные версии []

Запрошенные координаты артефакта связаны в нашей связке и могут быть найдены в веб-интерфейсе.

1 ответ

Решение

Код выше работает.

Важно уточнить URL более конкретно, чтобы вместо

Http: // имя хоста: 8081 / нексус /# нексус

мне нужно было изменить это на:

Http: // имя хоста: 8081 / нексус / содержание / группы / общественности

Другие вопросы по тегам