清理Maven本地仓库并保留最新版本?

15

我应该如何轻松地从我的本地仓库中删除所有过期的快照?

我的仓库中有很多文件,导致性能不佳,获取构件的时间很长。我想将仓库保持到最新的快照。

我发现 dependency:purge-local-repository 可以清除本地仓库,但我想保持最新版本。 如果已经有一个工具可以清除到最新状态,我就不想重新发明轮子了,但是我可以轻松地创建一个脚本来完成此工作(并在插件中包装它)。

是否有一个插件可以将我的依赖项清除为最新的快照或最后 X 个快照?


似乎 mojo 的 snapshotsOnly 并不够好,因为您想要类似于 oldSnapshotsOnly 的东西? - noahlz
可能是 https://dev59.com/GGjWa4cB1Zd3GeqPoC1f 的重复问题。 - Prasad S Deshpande
2个回答

13

这与如何高效处理Maven 3时间戳快照类似。

我添加了以下内容,每次构建的包都会清除旧的快照,使我的本地仓库保持精简,并确保在Windows上进行更快速的构建,因为它存在着一个庞大的仓库问题。

     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>           
            <execution>             
                <id>remove-old-artifacts</id>             
                <phase>package</phase>             
                <goals>               
                    <goal>remove-project-artifact</goal>             
                </goals>            
                <configuration>  
                    <removeAll>true</removeAll><!-- remove all versions of built artifacts including all versions.  Install phase will regenerate -->             
                </configuration>          
                </execution>         
        </executions>             
    </plugin>

7
使用Peter的解决方案,所有当前构件的旧版本(如果应用于父POM中的一组构件,则包括发布和所有快照)都将被删除。
如果其他项目需要以前的发行版,则必须再次从您的非本地存储库(例如Nexus)下载,并且一旦您创建了此快照的“包”,它将再次被删除。
我见过另一个解决此问题的选项:http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
它具有定义“snapshotsOnly”的选项,并且仅会删除快照,而不是以前的稳定版本。

非常好的观点。除非一个站点将发布视为集成构建,否则清除已发布的构件是毫无意义的浪费。 - Petra Kahn
@carbavi请在您的回复中放置一个示例配置。 - BevynQ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接