Best way to handle old snapshots in local repository?

前端 未结 5 907
萌比男神i
萌比男神i 2021-02-19 06:35

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

相关标签:
5条回答
  • 2021-02-19 07:18

    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.

    0 讨论(0)
  • 2021-02-19 07:26

    On Linux, you can use this command:

    find $HOME/.m2/repository/ \
       -name "*-SNAPSHOT" \
       -type d \
       -mtime +60 \
       -print \
       -prune \
       -exec rm -r "{}" \;
    

    Explanation:

    • Find anything named *-SNAPSHOT in the folder $HOME/.m2/repository/
    • AND it must be a directory
    • AND it must not have been modified in the last 60 days
    • Print what you found. If you want to test the command, stop here
    • The -exec will delete the folder, -prune tells find not to try to enter the folder afterwards.
    • The -exec will delete the folder and files inside.
    0 讨论(0)
  • 2021-02-19 07:32

    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.

    0 讨论(0)
  • 2021-02-19 07:34

    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...

    0 讨论(0)
  • 2021-02-19 07:39

    You may try the Maven Repo Cleaner Jenkins Plugin

    0 讨论(0)
提交回复
热议问题