用于删除 nexus 3 上的工件的 groovy 脚本(不是 nexus 2)

标签 groovy scripting nexus nexus3

我有 Nexus 3 服务器,我在上面保存了工件,并且它已被填充到最大值。 我希望创建一个任务来每天删除旧工件,但始终保留至少 50 个工件。问题是应该执行它的默认任务不起作用。 configuration part 1

configuration part 2

所以我读到它可以通过我安排在任务中运行的 groovy 脚本来完成。

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

最佳答案

根据@daniel-schröter 的回答,您可以按照以下示例添加一个计划任务:

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

enter image description here

将语言设置为 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/

相关文章:

scripting - WinSCP 命令行被动模式

bash - 使环境变量可用于脚本的万无一失的方法是什么?

linux - 从 .csv 文件读取值并使用 Shell 脚本执行计算

maven - 存储库版本策略 : ignore missing poms?

java - 在 Java/Groovy 中嵌入处理

gradle - Gradle如何:从依赖项中解压缩ZIP文件中的ZIP文件,并保持增量生成功能

java - Maven with Nexus - 由 : java. util.zip.ZipException 引起:打开 zip 文件时出错

docker - nginx 反向代理背后的 Nexus docker 存储库

grails - 为子对象添加域dirtyPropertyNames

java - Groovy 可以动态添加或覆盖 POJO 上的方法吗?