我们正在使用最新版本的nexus,我希望创建一个清理任务。
我有一个groovy脚本,它运行在我从事务对象获得的可迭代组件列表中。
现在我想找到组件的资产,然后删除资产和组件。
我的脚本如下所示:
// Get a repository
def repo = repository.repositoryManager.get('maven-releases');
// Get a database transaction
def tx = repo.facet(StorageFacet).txSupplier().get();
// Begin the transaction
tx.begin();
def components = tx.browseComponents(tx.findBucket(repo));
// retention date
def retentionDate = new DateTime();
retentionDate.minusDays(1);
components.each{comp ->
def lastComp = comp.group() + comp.name();
def lastModDate = comp.lastUpdated();
if(lastModDate.isBefore(retentionDate)) {
// here -----------
// tx.deleteAsset(<asset>)
// -----------------
tx.deleteComponent(comp);
log.info("${lastComp} deleted!");
}
log.info("anz: ${assetCount} ${comp.version()} - ${lastModDate} - ${retentionDate}");
}
// End the transaction*/
tx.commit();
是否可以找到组件的相应资产?
答案 0 :(得分:1)
这很简单:
Asset asset = tx.findAsset(comp.entityMetadata.getId(), tx.findBucket(repo));