从sh文件调用时,Maven返回未知的生命周期错误

时间:2020-10-17 21:09:22

标签: bash shell maven

我正在从sh文件运行以下命令。

echo "This is job" $SLURM_ARRAY_TASK_ID
#! Command line that we want to run:
SLURM_ARRAY_TASK_ID=0
varData='mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/  wiki-004"'
echo $varData
$varData

在这里,运行代码将产生以下输出:

mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-0.txt wiki-004-0 wikiOuts/ wiki-004"

Unknown lifecycle phase "wiki-004-0.txt"

但是,如果我将输出从echo $varData复制粘贴到我的终端屏幕,则该程序会严格执行。我不确定错误的根源是什么。任何帮助将不胜感激。

echo $varData的输出:

 mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="/home/ak2329/rds/hpc-work/feverDataset/wikiLineSPlits/wiki-004/ wiki-004-0.txt wiki-004-0 /home/ak2329/rds/hpc-work/feverDataset/wikiOuts/ wiki-004"

3 个答案:

答案 0 :(得分:1)

我会尝试:

$(echo $varData)

作为脚本的最后一行

答案 1 :(得分:1)

问题是您的maven命令行的每个阶段正在传递range参数,而-Dexecclean都不知道该怎么做他们。如果您重写有关阶段的命令

compile

和 mvn exec

并且仅将mvn clean compile args传递到第二阶段,那么您应该不会遇到这些错误。

答案 2 :(得分:0)

我最终决定直接使用shell命令,而不是将其存储到变量中。

mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/  wiki-004"

以前使用的命令是:

varData='mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/  wiki-004"'
echo $varData