Maven Gitlab CI缓存特定文件类型

Maven Gitlab CI缓存特定文件类型,maven,continuous-integration,gitlab,gitlab-ci,gitlab-ci-runner,Maven,Continuous Integration,Gitlab,Gitlab Ci,Gitlab Ci Runner,我试图在gitlab runner中使用缓存,它构建了一个Maven Java项目。当前,Gitlab runner只允许缓存在缓存:子句中的Gitlab yaml文件中定义的特定路径。当maven构建项目时,它会生成target/文件夹中的所有内容,这些都是git中未跟踪的文件。所以我可以简单地使用untracked:true选项来缓存target/文件夹下的所有内容。缓存的目的是跳过编译已由maven在target/文件夹下编译的文件 然而,这个缓存的容量大约为6GB,这对于创建和恢复这样一

我试图在gitlab runner中使用缓存,它构建了一个Maven Java项目。当前,Gitlab runner只允许缓存在
缓存:
子句中的Gitlab yaml文件中定义的特定路径。当maven构建项目时,它会生成
target/
文件夹中的所有内容,这些都是git中未跟踪的文件。所以我可以简单地使用
untracked:true
选项来缓存
target/
文件夹下的所有内容。缓存的目的是跳过编译已由maven在
target/
文件夹下编译的文件

然而,这个缓存的容量大约为6GB,这对于创建和恢复这样一个巨大的缓存所需的大小和时间来说是完全不合理的。它缓存在编译多模块maven项目期间构建的所有jar和war工件。但是,maven只需要.class文件来检查更改以进行重新编译

因此,如果它们是某种我只能缓存
*.class
文件并在后续版本中使用的方法,那么maven可以检查.class文件并跳过重新编译未更改的文件,并且缓存大小也会非常小。目前gitlab runner只允许指定缓存的绝对路径。它不支持路径的正则表达式模式,例如
\.class$
(这将非常有用)

是否有任何方法可以使用gitlab runner yaml设置仅缓存特定的文件类型?

基于此,我找到了一个解决方案

在maven构建结束时,我运行了一个命令来清理maven创建的所有构建工件,这些工件不用于检查.java资源的陈旧状态。这是我写的-

cd ./projects/directory
find . | grep --perl-regexp --regexp='\/target\/(?!classes|maven)' | xargs rm --recursive --force

这会将所有.class文件保存在target/classes文件夹中,包括文件夹结构以及maven status文件夹中的文件,maven可能会使用这些文件来检查文件状态以进行重新编译。

这可能是一个愚蠢的想法,但。。。你不能在作业结束时清理该文件夹,以便除去除要缓存的文件以外的所有内容吗?我建议使用
find*
排除
.git
目录。此外,您可能还希望包括
测试类