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

时间:2017-09-07 13:49:29

标签: groovy nexus sonatype

我们正在使用最新版本的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();

是否可以找到组件的相应资产?

1 个答案:

答案 0 :(得分:1)

这很简单:

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