2017-02-21 45 views
1

Я ищу способ запросить компоненты или активы от groupId и artefactId.nexus3 api как искать компонент из groupId и artifactId

Документация предоставляет любую помощь о том, как создать этот запрос.

This doc был полезной.

К сожалению, этого недостаточно, чтобы решить мою потребность, и я пытаюсь создать запрос, чтобы запросить компоненты из groupId и artefactId подобное:

Query.builder().where('group = ').param('###').and('name = ').param('###').and('version = ').param('###).build() 

Последний раз я играл мой сценарий он бросил java.lang.StackOverflowError. После увеличения памяти у меня был тот же результат. Кажется, слишком много компонентов для возврата, но в моем репозитории nexus есть только один компонент с такой группой, именем и версией.

Что случилось с этим вопросом?

Есть ли кто-то, кто преодолел эту трудность (это было так просто с nexus2 и rest api!) И получить информацию о компонентах с помощью строчного скрипта?

+0

'пары ('###) построить()'. - отсутствует одинарные кавычки? – Rao

+0

Ошибка указана только в иллюстрации кода. В реальном коде отсутствует пропущенная цитата. – olivier

ответ

0

okee,

на самом деле мои потребности: я хочу, чтобы получить версию последнего выпуска и дату его компоненты по группам и артефакту. Я определенно оставляю опциональный вариант API.

Найденный способ заключается в использовании extdirect api. Этот «rest» api используется интерфейсом nexus для связи с бэкэнд. Документация не существует.

Я звоню, чтобы перенаправить api, чтобы получить все версии из компонента по группам и артефакту. Я анализирую результаты, чтобы получить последнюю версию в выпуске (моментальный снимок и выпуски). Это не очень хорошо, потому что этот вызов извлекает все версии во всех репозиториях и может быть огромным.

Еще один вызов extdirect api, чтобы найти дату выпуска из идентификатора компонента последней версии.

Я надеюсь, что когда-нибудь nexus опубликует официальную документацию полезного отдыха api.

1

Вот сценарий, который я успешно загрузил и использовал. Вы можете легко добавить версию к своим запросам - параметр будет, например, «snapshots-lib, com.m121.somebundle, someBundle, 7.2.1-SNAPSHOT, all». Как вы можете видеть, я решил фильтровать последовательность локально, потому что не нашел способ указать в параметре версии запроса.

{ 
 
    "name": "listgroup", 
 
    "type": "groovy", 
 
    "content": "import org.sonatype.nexus.repository.storage.Query; 
 
    import org.sonatype.nexus.repository.storage.StorageFacet; 
 
    import groovy.json.JsonOutput; 
 

 
    def repositoryId = args.split(',')[0]; 
 
    def groupId = args.split(',')[1]; 
 
    def artifactId = args.split(',')[2]; 
 
    def baseVersion = args.split(',')[3]; 
 
    def latestOnly = args.split(',')[4]; 
 

 
    def repo = repository.repositoryManager.get(repositoryId); 
 
    StorageFacet storageFacet = repo.facet(StorageFacet); 
 
    def tx = storageFacet.txSupplier().get(); 
 

 
    tx.begin(); 
 
    def components = tx.findComponents(Query.builder().where('group = ').param(groupId).and('name = ').param(artifactId).build(), [repo]); 
 
    def found = components.findAll{it.attributes().child('maven2').get('baseVersion')==baseVersion}.collect{def version = it.attributes().child('maven2').get('version');\"${version}\"}; 
 

 
    // found = found.unique().sort(); 
 
    def latest = found.isEmpty() ? found : found.last(); 
 
    
 
    tx.commit(); 
 
    def result = latestOnly == 'latest' ? JsonOutput.toJson(latest) : JsonOutput.toJson(found); 
 

 
    return result;" 
 
}

 Смежные вопросы

  • Нет связанных вопросов^_^