如何在Windows上配置exec-maven-plugin分阶段运行两个Shell脚本?
解决Windows WSL环境下Maven绑定Shell脚本到测试阶段的问题
针对你在Windows(带WSL/bash集成)环境下,Maven执行Shell脚本失败的问题,这里给出可行的POM配置方案,以及之前尝试失败的原因分析:
正确的POM配置
使用exec-maven-plugin的单个实例,配置两个execution分别绑定到pre-integration-test和post-integration-test阶段,明确调用bash执行脚本:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <!-- 建议使用最新稳定版 --> <executions> <!-- 启动Docker容器 --> <execution> <id>start-docker-containers</id> <phase>pre-integration-test</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>bash</executable> <arguments> <argument>-c</argument> <!-- 使用Maven内置变量获取项目根路径,避免硬编码 --> <argument>${project.basedir}/src/main/scripts/startDockerContainers.sh</argument> </arguments> <!-- 可选:如果脚本无执行权限,先添加权限再执行 --> <!-- <arguments> <argument>-c</argument> <argument>chmod +x ${project.basedir}/src/main/scripts/startDockerContainers.sh && ${project.basedir}/src/main/scripts/startDockerContainers.sh</argument> </arguments> --> </configuration> </execution> <!-- 停止Docker容器 --> <execution> <id>stop-docker-containers</id> <phase>post-integration-test</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>bash</executable> <arguments> <argument>-c</argument> <argument>${project.basedir}/src/main/scripts/stopDockerContainers.sh</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
之前尝试失败的可能原因
- 方案1(两个独立插件实例):大概率是第二个插件的脚本路径配置错误,或者未指定bash执行——Windows默认会用cmd解析sh脚本,自然找不到对应文件。
- 方案2(同一插件多execution):可能是工作目录配置错误,或者直接执行sh脚本而未通过bash调用,Windows环境无法识别sh文件的执行器。
- 方案3(调用bash但退出码2):退出码2是bash的"找不到指定文件"错误,可能是路径用了Windows反斜杠,或者脚本没有执行权限,也有可能是Maven解析的路径在WSL中需要转换(不过用
${project.basedir}一般能避免这个问题)。
额外排查步骤
- 给脚本添加执行权限:在WSL终端进入
src/main/scripts目录,执行chmod +x startDockerContainers.sh stopDockerContainers.sh。 - 验证项目路径:执行
mvn help:evaluate -Dexpression=project.basedir,确认输出的根路径和脚本拼接后是正确的。 - 查看执行详情:在插件的
configuration里添加<verbose>true</verbose>,执行mvn clean verify时会输出完整的执行命令,方便定位问题。
内容的提问来源于stack exchange,提问作者shaidyn
相关产品推荐
相关产品推荐

