Created
August 29, 2025 07:03
-
-
Save a-langer/2646e3658ca0af6121a5b1987bb35111 to your computer and use it in GitHub Desktop.
Nexus Groovy task for execute 'Invalidate Cache' on all group repositories
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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