1

我正在使用 Python 来简化Maven中的一些命令。我有这个mvn test以调试模式调用的脚本。

from subprocess import call
commands = []
commands.append("mvn")
commands.append("test")
commands.append("-Dmaven.surefire.debug=\"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE\"")
call(commands)

问题在于-Dmaven.surefire.debug接受必须在配额中的参数的行,我不知道如何正确地做到这一点。当我打印这个列表时它看起来很好,但是当我运行我得到的脚本时Error translating CommandLine,调试行永远不会执行。

4

1 回答 1

1

只有执行命令的 shell 才需要配额。

如果您直接从外壳进行上述调用,您可能会这样做

mvn test -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE"

通过这些"标志,您(简单地说)告诉外壳忽略其中的空格。

使用参数调用程序

mvn
test
-Dmaven.surefire.debug=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE

所以

from subprocess import call
commands = []
commands.append("mvn")
commands.append("test")
commands.append("-Dmaven.surefire.debug=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE")
call(commands)

应该是要走的路。

于 2013-01-17T09:01:12.383 回答