We have a Nexus local repository manager which handles all our internal projects (as well as mirroring outside repositories). For our internal projects, we only keep the most
We use a similar setup here. We have nexus automatically delete snapshots once the artifact is released (for some repositories). Then on our continuous server, we just have a cron job that once a day deletes the local repository folder. This works well for us.
On Linux, you can use this command:
find $HOME/.m2/repository/ \
-name "*-SNAPSHOT" \
-type d \
-mtime +60 \
-print \
-prune \
-exec rm -r "{}" \;
Explanation:
*-SNAPSHOT
in the folder $HOME/.m2/repository/
-exec
will delete the folder, -prune
tells find not to try to enter the folder afterwards.-exec
will delete the folder and files inside.It could be a configuration problem with maven on your jenkins server.
maven can and should be configured to periodically look for updated snapshots by configuring the value of <updatePolicy>
in <repository>
section for <snapshots>
.
<updatePolicy>daily</updatePolicy>
The choices are: always
, daily
(default), interval:X
(where X is an integer in minutes) or never
.
Also, if the version changes (from 1.1-SNAPSHOT
to 1.2-SNAPSHOT
), it is not clear how jenkins would successfully build with an older (1.1-SNAPSHOT
) version.
First if you are using jenkins to build the best practice to have clean builds which means to use a local repository per build and not the global of the server. Furthermore it sounds that you don't use the release plugin to release your artifacts which automatically checks if a pom contains SNAPSHOTs and would fail if there are some. Furthermore it's possible to clean up the local repository via the maven-dependency-plugin. Based on my experience i have simply configured a task which deletes SNAPSHOTs which are older than a month...
You may try the Maven Repo Cleaner Jenkins Plugin