Как получить последнюю (также SNAPSHOT) версию артефакта maven, используя эфирный API?

Я использую eclipse.aether (версия 1.0.0.v20140518), чтобы программно получить некоторые артефакты maven из моего хранилища. Для этого я использую следующий код:

Artifact artifact = new DefaultArtifact( artifactName );
ArtifactRequest artifactRequest = new ArtifactRequest().setArtifact( artifact );
repositorySystem.resolveArtifact(session, artifactRequest);

где artifactName - это строка в формате "groupId:artifactId: версия". Когда версия является фиксированной версией (как в "org.myNamespace:myProject:1.0.0"), все работает нормально. Более того, мне следует разрешить также заменить фиксированную версию на "LATEST" (как в "org.myNamespace:myProject:LATEST"), и в этом случае она должна загрузить последнюю версию этого артефакта в мой репозиторий.

Это также работает, но только частично, что означает, что он никогда не извлекает артефакты SNAPSHOT, а только выпуски. Кажется, что это не соответствует семантическому формату maven, так как он также описан здесь. Как я могу сказать Maven использовать последнюю версию зависимости?

Я делаю что-то неправильно? Есть ли способ загрузить последнюю версию артефакта независимо от того, является ли он выпуском или снимком?

1 ответ

Использование открытого диапазона (не ПОСЛЕДНЕГО) работает с resolveVersionRange, Например:

VersionRangeRequest request = new VersionRangeRequest();
request.setArtifact(new DefaultArtifact("groupId", "artifactId", "jar", "(,]"));
VersionRangeResult result = repositorySystem.resolveVersionRange(session, request);
Version highestVersion = result.getHighestVersion();
Другие вопросы по тегам