Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Script that can be used to purge nexus v3 releases
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
def fmt = DateTimeFormat.forPattern('yyyy-MM-dd HH:mm:ss');
].each { reponame ->
// Get a repository
def repo = repository.repositoryManager.get(reponame);
// Get a database transaction
def tx = repo.facet(StorageFacet).txSupplier().get();
// Search assets that haven't been downloaded for more than three months
try {
// Begin the transaction
.where('last_downloaded <')
.build(), [repo]).each { asset ->
if (asset.componentId() != null) {
def component = tx.findComponent(asset.componentId());
if (component != null) {
def count = tx.countComponents(Query.builder().where('name').eq('version >').param(component.version()).build(), [repo]);
// Check if there is newer components of the same name
if (count > 0) {"Delete asset ${} as it has not been downloaded since 3 months and has a newer version")
} else {"Asset ${} wasn't downloaded for more than 3 months, I hope we dont' need it anymore even if this is the only version.")
// End the transaction
} catch (all) {"Exception: ${all}")
} finally {

This comment has been minimized.

Copy link

@bknopper bknopper commented Nov 30, 2017

Thanks! Just what I was looking for. Adjusted it a bit with more logging and to my use case:


This comment has been minimized.

Copy link

@fabiocruzcoelho fabiocruzcoelho commented Apr 17, 2018

Good evening,

I am not able to pass the repository to perform the cleaning, could you help me?

How does this script clean these components?

Thank you


This comment has been minimized.

Copy link

@fernando-nog fernando-nog commented Jul 20, 2018

Very useful thanx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment