使用Nexus Sonatype中的groovy删除资产和组件

使用Nexus Sonatype中的groovy删除资产和组件,groovy,nexus,sonatype,Groovy,Nexus,Sonatype,我们正在使用最新版本的nexus,我想要创建一个清理任务 我有一个groovy脚本,它运行在我从事务对象获得的iterable组件列表上 现在我想找到组件的资产,然后删除资产和组件 我的脚本如下所示: // Get a repository def repo = repository.repositoryManager.get('maven-releases'); // Get a database transaction def tx = repo.facet(StorageFacet).tx

我们正在使用最新版本的nexus,我想要创建一个清理任务

我有一个groovy脚本,它运行在我从事务对象获得的iterable组件列表上

现在我想找到组件的资产,然后删除资产和组件

我的脚本如下所示:

// 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();
//获取存储库
def repo=repository.repositoryManager.get('maven-releases');
//获取数据库事务
def tx=repo.facet(StorageFacet.txSupplier().get();
//开始交易
tx.begin();
def组件=tx.browseComponents(tx.findBucket(repo));
//保留日期
def retentionDate=new DateTime();
保留日期:不足天(1);
组件。每个{comp->
def lastComp=comp.group()+comp.name();
def lastModDate=comp.lastUpdated();
if(lastModDate.isBefore(保留日期)){
//这里-----------
//tx.deleteAsset()
// -----------------
tx.delete组件(comp);
log.info(“${lastComp}已删除!”);
}
log.info(“anz:${assetCount}${comp.version()}-${lastModDate}-${retentionDate}”);
}
//结束交易*/
tx.commit();
是否可以找到组件对应的资产?

这很容易:

Asset asset = tx.findAsset(comp.entityMetadata.getId(), tx.findBucket(repo));