Maven中pom.xml配置执行bash脚本不生效无报错,是什么原因?
问题根因及修复方案
1. 核心配置层级错误
你当前把exec-maven-plugin的<configuration>块直接写在了plugin全局层级,没有放到对应<execution>的内部,该执行实例无法读取到可执行文件配置,所以不会触发执行,也不会抛出配置错误。
正确配置调整如下:
<plugin> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <groupId>org.codehaus.mojo</groupId> <executions> <execution> <id>Update Version using QuickTag</id> <phase>package</phase> <goals> <goal>exec</goal> </goals> <!-- 将configuration移到execution内部 --> <configuration> <executable>${basedir}/updateVersion.sh</executable> <!-- 可选配置:开启后脚本输出会打印到构建日志中,方便排查问题 --> <showOutput>true</showOutput> </configuration> </execution> </executions> </plugin>
2. 其他需检查的常见问题
- 确保脚本有可执行权限,在项目根目录执行命令:
chmod +x updateVersion.sh - 同Maven阶段的插件执行顺序和pom里的声明顺序一致,你当前把exec执行绑定到了
package阶段,会在jar打包完成后才执行脚本。如果希望版本更新在打包前生效,建议把phase调整为prepare-package,避免打包完才更新版本的异常。 - 补充优化提示:你已经把
quicktag插件的goal绑定到了generate-sources阶段,正常执行mvn package时会自动执行quicktag的版本更新逻辑,不需要额外写bash脚本再调用一次Maven命令,否则会触发Maven递归调用,反而可能导致版本更新重复、构建速度变慢。如果你的脚本没有其他额外逻辑可以直接删掉exec插件的配置即可实现版本自动更新。
内容的提问来源于stack exchange,提问作者themetman
相关产品推荐
相关产品推荐

