groovy脚本,以删除Nexus 3(而非Nexus 2)上的工件

Ori*_*sel 1 scripting groovy nexus nexus3

我有nexus 3服务器,可以在其上保存工件,并且已满。我希望创建一个每天删除旧工件的任务,但始终保留至少50个工件。问题是应该执行的默认任务不起作用。 配置第1部分

配置第2部分

所以我读到它可以用我计划在任务中运行的常规脚本来完成。

有人可以帮我吗?我在互联网上找不到任何有用的东西。

Seb*_*ian 6

根据@daniel-schröter答案,您可以在Scheduled Task此示例中添加以下内容:

转到System -> Tasks并单击Create Task。创建脚本任务:

在此处输入图片说明

设置语言为,groovy然后复制修改后的脚本以适合预定任务(您应该对它进行修改,这只是一个示例):

import org.sonatype.nexus.repository.storage.Component
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet

log.info("delete components for repository: my-repo")

def compInfo = { Component c -> "${c.group()}:${c.name()}:${c.version()}[${c.lastUpdated()}]}" }

def repo = repository.repositoryManager.get("my-repo")
StorageFacet storageFacet = repo.facet(StorageFacet)

def tx = storageFacet.txSupplier().get()
tx.begin()
Iterable<Component> components = tx.findComponents(Query.builder().where('last_updated < ').param('2190-01-01').build(), [repo])
tx.commit()
tx.close()

log.info("about to delete " + components.flatten(compInfo))
for(Component c : components) {
    log.info("deleting " + compInfo(c))
    tx2 = storageFacet.txSupplier().get()
    tx2.begin()
    tx2.deleteComponent(c)
    tx2.commit()
    tx2.close()
}

log.info("finished deleting " + components.flatten(compInfo))
Run Code Online (Sandbox Code Playgroud)