Skip to content

Instantly share code, notes, and snippets.

@a-langer
Created August 29, 2025 07:03
Show Gist options
  • Select an option

  • Save a-langer/2646e3658ca0af6121a5b1987bb35111 to your computer and use it in GitHub Desktop.

Select an option

Save a-langer/2646e3658ca0af6121a5b1987bb35111 to your computer and use it in GitHub Desktop.
Nexus Groovy task for execute 'Invalidate Cache' on all group repositories
import com.google.inject.Key;
import com.google.inject.name.Names;
import org.eclipse.sisu.inject.BeanLocator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonatype.nexus.repository.Repository;
import org.sonatype.nexus.repository.group.GroupFacet;
import org.sonatype.nexus.repository.manager.RepositoryManager;
// import org.sonatype.nexus.repository.proxy.ProxyFacet;
import org.sonatype.nexus.repository.types.GroupType;
// import org.sonatype.nexus.repository.types.ProxyType;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
// Perform 'Invalidate Cache' on all group repositories.
// https://community.sonatype.com/t/invalidate-cache-of-nexus-group-repository-via-groovy/9865
// https://github.com/sonatype/nexus-public/blob/main/components/nexus-repository-services/src/main/java/org/sonatype/nexus/repository/cache/RepositoryCacheInvalidationService.java
// https://help.sonatype.com/en/api-reference.html
@groovy.transform.Field static Logger logger = LoggerFactory.getLogger('task.ExecuteInvalidateCache.groovy');
logger.info("Start task.ExecuteInvalidateCache.groovy")
def lookup(clz, name) {
def beanLocator = container.lookup(BeanLocator.class.name);
return beanLocator.locate(Key.get(clz, Names.named(name))).first().value;
}
/**
* Invalidates the group caches for given repository.
*/
private void invalidateGroupCaches(final Repository repository) {
checkNotNull(repository);
checkArgument(GroupType.NAME.equals(repository.getType().getValue()));
GroupFacet groupFacet = repository.facet(GroupFacet.class);
groupFacet.invalidateGroupCaches();
}
final RepositoryManager repositoryManager = container.lookup(RepositoryManager.class.getName());
for (Repository repository: repositoryManager.browse() ) {
if (GroupType.NAME.equals(repository.getType().getValue())) {
logger.info("InvalidateGroupCaches in repository: {}", repository);
invalidateGroupCaches(repository);
}
}
logger.info("End task.ExecuteInvalidateCache.groovy");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment