我有nexus 3服务器,我在其上保存了工件,并且已经填充到最大。 我希望创建一个每天删除旧工件的任务,但始终保留至少50个工件。问题是应该这样做的默认任务不起作用。
所以我读到它可以用我计划在任务中运行的groovy脚本来完成。
任何人都可以帮助我吗?我无法在互联网上找到任何有用的东西。
答案 0 :(得分:4)
基于@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))
答案 1 :(得分:0)
答案 2 :(得分:-1)
Sonatype有一个user mailing list,他们经常指导人们提出常见的脚本建议。此外,与StackOverflow答案或评论相比,它可能是寻求有关计划任务帮助的更好的论坛。