【发布时间】:2014-04-24 08:47:13
【问题描述】:
我正在使用 exec-maven-plugin 在 POM 生命周期的预清理阶段执行自定义清理脚本。此脚本的目的是清理在编译和测试阶段创建的一堆日志文件和测试工件。该脚本需要知道这些文件的路径,因此在初始化阶段它会被 maven-resources-plugin 过滤。
我发现这是一个糟糕的设计选择:我只能在完成 mvn initialize 之后再做 mvn clean。这通常不是问题,因为您只需要在完成某些操作后进行清理......但是,我已经开始使用 maven-release-plugin,它尝试执行 mvn clean deploy,但由于清理脚本而失败不可用。
我想到了以下可能的解决方案:
仅使用 maven-clean-plugin
将脚本附加到不同的阶段
修改脚本使其不需要过滤
这两个我都不喜欢,因为:
我想使用脚本进行清理,因为它可以让我保持 POM 文件干净(我需要删除很多文件,我不想指定所有将它们手动添加到 maven-clean-plugin)。
不可能:测试结果需要在测试后由 Jenkins 提取,所以我无法在构建和测试周期中清理它们。清洁循环中没有其他阶段可以绑定。
有点可能,但在不久的将来我们(可能)希望直接从 Jenkins 发布,它只能访问 sh(而不是 bash),所以我不能使用相对路径,除非我做丑
export PATH=.:$PATH。
考虑到我对 Jenkins 服务器的限制(不受我控制),我该如何解决这个问题?
【问题讨论】:
-
为什么需要自定义脚本?如果您已在目标文件夹中找到所有结果,那应该不是问题。
-
并非所有结果最终都在目标文件夹中。我们在这里使用的构建和测试工具倾向于在源代码树中留下任何东西。他们不应该在那里,但我无法真正控制。因此,我的自定义脚本在之后清理混乱。
-
为什么不使用 maven-clean-plugin 来清理其他位置 (maven.apache.org/plugins/maven-clean-plugin/examples/…)。
-
正如我在问题中提到的,我需要清理很多工件。在脚本中,我可以使用
find和grep轻松找到它们;以您链接到的方式指定所有这些将导致 POM 文件中包含/排除的列表很长。我希望我可以避免这种情况。
标签: maven