我有 Nexus 3 服务器,我在上面保存了工件,并且它已被填充到最大值。 我希望创建一个任务来每天删除旧工件,但始终保留至少 50 个工件。问题是应该执行它的默认任务不起作用。
所以我读到它可以通过我安排在任务中运行的 groovy 脚本来完成。
有人可以帮我吗?我在互联网上找不到任何有用的东西。
最佳答案
根据@daniel-schröter 的回答,您可以按照以下示例添加一个计划任务
:
转到 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))
关于用于删除 nexus 3 上的工件的 groovy 脚本(不是 nexus 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589937/