Вы можете создать скрипт в Groovy и загрузить его в Nexus, чтобы сделать то, что вы хотите.
Вот пример сценария, который я использовал для записи, чтобы возвращать все версии для данной группы и репозитория.
Содержание version.json
:
{
"name": "version",
"type": "groovy",
"content": "import org.sonatype.nexus.repository.storage.Query;
import org.sonatype.nexus.repository.storage.StorageFacet;
import groovy.json.JsonOutput;
def groupId = args.split(',')[0];
def repositoryId = args.split(',')[1];
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).build(), [repo]);
def found = components.collect {
def baseVersion = it.attributes().child('maven2').get('baseVersion');
\"${baseVersion}\"
};
found = found.unique();
tx.commit();
def result = JsonOutput.toJson(found);
return result;"
}
Интересная часть здесь является tx.findComponents()
, которая возвращает общий Component
класс. Этот класс предоставляет дополнительную информацию о своем контейнере с функцией attributes()
. Затем вы можете использовать его, чтобы получить baseVersion
, то есть версию Maven, используемую для использования (с суффиксом -SNAPSHOT
).
Чтобы установить этот скрипт, просто выполните следующее:
curl -v -X POST -u <NEXUS_ADMIN>:<NEXUS_PWD> --header "Content-Type:application/json" http://<SERVER_NEXUS>/nexus/service/siesta/rest/v1/script -d @version.json
Вы можете проверить это легко с:
curl -v -X POST -u <NEXUS_ADMIN>:<NEXUS_PWD> --header "Content-Type: text/plain" "http://<SERVER_NEXUS>/nexus/service/siesta/rest/v1/script/version/run" -d "com.my.groupid,snapshots"
Это вернет все версии, которые вы хотите, как вы хотите:
{
"name" : "version",
"result" : "[\"1.5.2-SNAPSHOT\",\"1.5.3-SNAPSHOT\",\"1.6.1-SNAPSHOT\",\"1.5.0-SNAPSHOT\"]"
}
Надеюсь, это поможет!
Просто любопытно: Почему вы используете Nexus 3 вместе с Maven? –
Поскольку наш проект основан на maven (Java), что бы вы сделали? – brest1007
Мы используем Nexus 2.x, пока Nexus 3 полностью не удовлетворит наши потребности. –