我正在使用exec-maven-plugin在POM生命周期的预清理阶段执行自定义清理脚本。此脚本的目的是清理在编译和测试阶段创建的一堆日志文件和测试工件。此脚本需要知道这些文件的路径,因此在初始化阶段,maven-resources-plugin会对其进行过滤。
我发现这是一个糟糕的设计选择:我只能在完成mvn clean
后才mvn initialize
。这通常不是问题,因为你只需要在完成某些事情后进行清理......但是,我已经开始使用maven-release-plugin,它尝试执行mvn clean deploy
,由于干净的脚本无法使用。
我想到了以下可能的解决方案:
仅使用maven-clean-plugin
将脚本附加到其他阶段
修改脚本,使其不需要过滤
我不喜欢其中任何一个,因为:
我想使用脚本进行清理,因为它允许我保持POM文件的清洁(我需要删除很多文件,我不想指定所有他们手动到maven-clean-plugin)。
不可能:Jenkins在测试后需要检测测试结果,因此在构建和测试周期中我无法清除它们。清洁循环中没有其他阶段可以绑定。
排序可能,但在不久的将来我们(可能)想直接从Jenkins发布,只能访问sh(不是bash),所以我不能使用相对路径,除非我做丑export PATH=.:$PATH
。
考虑到我在Jenkins服务器上的限制(不在我的控制之下),我该如何解决这个问题?
答案 0 :(得分:0)
并非所有结果都会在目标文件夹中结束。
你的问题是:-)最干净的解决办法是修复它,然后使用1)。或者,考虑条件脚本。将此类内容提交给src/main/bin
:
#!/bin/sh
if [ -f target/generated-clean-script ]; then
sh target/generated-clean-script
fi
然后在clean
无条件地运行它。它在第一次运行时不会执行任何操作,但在initialize
生成该脚本后清理任何构建。
作为2)的变体,考虑不将其绑定到阶段。在需要时直接运行脚本,而不是通过Maven。