我在运行mvn test
时想要替换的两个bash脚本中有一些属性,这样一个脚本可能在test
阶段之前执行,一个脚本在exec-maven-plugin
之后执行。
bash脚本如下所示:
startMongo
#!/bin/bash
${mongodNixDirLocation}/mongod --fork --logpath "${mongodLogDir}" --port ${mongodbTestPort}
/bin/sleep 10
stopMongo
#!/bin/bash
mongoDbServer=`lsof -i tcp:${mongodbTestPort}| awk 'NR!=1 {print $2}'`
for i in $mongoDbServer; do
echo "Stopping mongo DB server instance: $i"
kill -s SIGINT $i
done
当我运行mvn test
时,我似乎遇到执行顺序问题。输出类似于so。
exec-maven-plugin
尝试在进行适当替换之前执行startMongo
脚本 - 因此错误消息似乎从mongod
执行/mongod
。
如果我运行mvn process-test-resources
,则替换正确,我可以成功手动运行脚本。
我的pom.xml配置为so。如何正确配置正确的阶段,以便这可以工作?
答案 0 :(得分:1)
看起来问题出在以下几行:
<executable>src/test/resources/startMongo</executable>
如果此脚本 - startMango
- 需要过滤,则会完成过滤并将结果放在target/test-classes
文件夹中。原始文件不会更新。
如何将上述行改为:
<executable>${project.build.directory}/test-classes/startMongo</executable>
同样适用于stopMongo
。
我不确定它是如何手动工作的。