Список доступных версий от 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 / нексус / содержание / группы / общественности