也许我错过了一些东西,但是我找不到从UI上载组件(jar或dll)到nexus 3存储库的方法。所以我想为这个工作构建一个工具,为了优化上传过程,我需要一种方法来检查组件是否以编程方式存在于nexus存储库中,我所有的尝试找到合适的rest API失败。Nexus 3 Rest api来检查组件是否存在
任何人都有建议吗?
也许我错过了一些东西,但是我找不到从UI上载组件(jar或dll)到nexus 3存储库的方法。所以我想为这个工作构建一个工具,为了优化上传过程,我需要一种方法来检查组件是否以编程方式存在于nexus存储库中,我所有的尝试找到合适的rest API失败。Nexus 3 Rest api来检查组件是否存在
任何人都有建议吗?
此时,REST API已经发布为beta版。您可以通过以下链接获取更多信息并向我们提供反馈:http://blog.sonatype.com/nexus-repository-new-beta-rest-api-for-content
您可以使用一些新端点来检查组件/资产是否存在,然后使用curl或类似取决于要上传的格式它通过现有的格式端点。
也许你可以上传一个groovy脚本并使用该脚本来检查组件是否存在。
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;