我有一个java Web应用程序项目。我正在使用exec-maven-plugin来执行一个shell脚本,当使用mvn clean isntall构建项目时,该脚本会在目录中创建一个小的txt文件。我已经确认通过编写测试文本运行mvn clean install时正在执行该脚本。但是,该脚本不会创建txt文件。
当脚本通过终端正常运行时,即./script.sh,正确创建了txt文件。
toTxt="hello"
printf $toTxt > testText.txt
echo 'This shows up, but testText is not created.'
有谁知道为什么这是开心的?
答案 0 :(得分:0)
尝试回显pwd
命令以查看应在何处创建文件或添加<workingDirectory>${project.build.outputDirectory}</workingDirectory>
到pom.xml中的配置块
注意:您可以指定${project.build.outputDirectory}
以外的其他内容来专门指向正确的位置。并确保您具有写入权限。
答案 1 :(得分:0)
请记住,某些命令不是外部程序,而是shell内置程序。这意味着他们不会启动程序,并且maven-exec-plugin将无法运行它们。 但是 ,您可以运行bash
来获得结果,而不是pwd
。
bash -c "echo $(pwd)"
应该做的伎俩。 Maven正在启动bash
,然后运行脚本echo $(pwd)
,调用bash内置函数pwd
并将结果传回(由于回显)。
是的,要解决缺少pwd
计划的工作很多,但那是因为真的没有pwd
计划,而且#&# 39; bash
的内部产品的一部分。
http://www.tldp.org/LDP/abs/html/internal.html列出了bash内部(内置命令)。