Java Maven exec插件构建成功,即使可执行文件在Windows上失败
我有一个maven项目,其中我使用maven exec插件执行一个windowsJava Maven exec插件构建成功,即使可执行文件在Windows上失败,java,maven,exec-maven-plugin,Java,Maven,Exec Maven Plugin,我有一个maven项目,其中我使用maven exec插件执行一个windows.bat文件。问题是,即使bat执行失败(即退出代码为-1),项目的构建也是成功的 以下是我定义的插件: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.4.0</vers
.bat
文件。问题是,即使bat执行失败(即退出代码为-1),项目的构建也是成功的
以下是我定义的插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>run.bat</executable>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
execmaven插件
1.4.0
编译
执行官
批处理文件
请注意,如果我在Unix上执行它(即execute.sh文件和build失败),其行为与预期相同。请查看问题:
Windows批处理文件不可执行。它们是由cmd
可执行文件运行的脚本
。。。简短的版本是:这不是“Maven”的问题,而是执行exec()
命令的平台依赖性问题
如果
run.bat
中的命令设置了%ERRORLEVEL%
,则该命令在执行CMD时设置,但未传递给CMD的调用者,即Maven Exec插件。退出你的run.bat
with explicifyly应该可以做到这一点。Gerold Broser,感谢你指向noahlz答案(实际上我已经找到了答案),不幸的是,退出%ERRORLEVEL%没有帮助。所以我按照noahlz的建议将.bat脚本解构为实际的命令,并直接从exec插件启动它。