在构建机器上清除Maven本地存储库

Max*_*ing 42 continuous-integration maven-2

在CI构建服务器上,本地Maven存储库重复填充文件系统(几天后).在这种情况下,其他人采取了什么策略来修剪本地存储库? - 最大

Ric*_*ler 27

Maven依赖插件有一个purge-local-repository目标,允许您从本地存储库中删除给定项目的依赖项,如果这样做,则每个项目每天运行一次,快照不会累积.


或者,你可以采取更加焦土的方法.由于问题通常是带时间戳的快照工件,您可以使用maven-antrun-plugin删除与资源集合模式匹配的所有文件.

例如(注意这可能需要一些调整,因为我已经从内存中完成了它):

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <configuration>
        <tasks>
          <delete>
            <fileset dir="${settings.localRepository}">
              <include name="**/*.jar"/>
              <exclude name="**/*.pom"/>
              <exclude name="**/*.war"/>
              <exclude name="**/*.ear"/>
              <exclude name="**/*.md5"/>
              <exclude name="**/*.sha"/>
              <!--any other extensions?...-->
              <!--match the timestamp pattern-->
              <containsregexp expression="[0-9]{8}.[0-9]{6}-[0-9]+"/>
            </fileset>
          </delete>
        </tasks>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)


Dom*_*ell 19

如果您正在使用hudson,则可以将预定作业设置为每天删除整个存储库一次或类似的事情.我有一个叫hudson-maven-repo-clean有这个配置的工作:

  • 构建/执行shell: rm -rf ~hudson/.m2/repository
  • 定期构建触发器/构建: 0 0 * * *


sal*_*sal 0

文件系统有多大?我们每晚分配 10GB 来构建和删除 30 天以上的快照。这似乎有效

您是否每隔 X 小时或在代码更改时进行构建?切换到代码更改将减少工件数量,而不会降低覆盖范围。

您是否在本地安装所有快照?您不需要在所有情况下都这样做。在大多数情况下,只有那些主动开发依赖项的快照需要在本地安装。

您是否在本地安装 EAR/WAR 文件?您可能也不需要它们。

您保留了多少个工作空间?我们使用 hudson 并仅保留最后 5 个版本。