Maven阶段/目标优先问题

时间:2012-01-20 06:16:53

标签: build-automation filtering maven-3

我在运行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。如何正确配置正确的阶段,以便这可以工作?

1 个答案:

答案 0 :(得分:1)

看起来问题出在以下几行:

<executable>src/test/resources/startMongo</executable>

如果此脚本 - startMango - 需要过滤,则会完成过滤并将结果放在target/test-classes文件夹中。原始文件不会更新。

如何将上述行改为:

<executable>${project.build.directory}/test-classes/startMongo</executable>

同样适用于stopMongo

我不确定它是如何手动工作的。