SpringXD:如何在分隔行中创建作业定义

时间:2016-10-31 15:09:33

标签: spring-xd

我的工作定义非常长。我想知道是否有办法将它分成多行以便于阅读。我试过了' \'或者' \ n'但他们都创造了就业机会,例如:

    xd:>job create --name myHttpJob --definition "httpJob \n
          job create --name myHttpJob --definition "httpJob \n
                                                ^
           Cannot have an unbalanced number of quotation marks
    xd:>--listeners=disable" --deploy
       Command '--listeners=disable" --deploy' not found (for assistance press TAB)

    xd:>job create --name myHttpJob --definition "httpJob \
         job create --name myHttpJob --definition "httpJob \
                                               ^
          Ran out of input in escape sequence
    xd:>--listeners=disable" --deploy
      Command '--listeners=disable" --deploy' not found (for assistance press TAB)

1 个答案:

答案 0 :(得分:1)

希望这仍然有助于那里的人。我不认为你能用当前版本的xd-shell将命令分成多行,但我所做的是通过使用shell脚本完成整个过程来外化整个过程。如果您需要多次运行相同或类似的命令并且可以参数化您的命令,这将非常有用。下面是shell脚本将包含的示例(让我们调用文件myxdshellfile.sh)。我的所有自定义模块上传/部署/定义和流也有类似的脚本。如果设置得很好,可以将其参数化以便部署到不同的环境中,并将环境作为输入arg传递。

echo -n -e " \
job create --name ${module}_${version} \
--definition \"${moduleDefinition} \
--restartable=false \
--dateFormat=yyyy-MM-dd \
--makeUnique=true \
--partitionResultsTimeout=7200000 \
\
--jdbcDriver=com.mysql.jdbc.Driver \
--jdbcUser=${user} \
--jdbcPassword=${pwd} \
--jdbcUrl=jdbc:mysql://${dbhost} \
\
--version=${version} \
\
\"
" > "$cmdfile"

#write string to file
echo -e -n .${shellpath}/shell/bin/xd-shell --cmdfile ${cmdfile}

#see what's in the file
cat ${cmdfile}

#execute spring-xd shell
bash ${shellpath}/shell/bin/xd-shell --cmdfile ${cmdfile}