以下命令在命令行中运行
mvn clean install -Denunciate.skip
但在powershell中出现了错误
[错误]未知的生命周期阶段“.skip”。您必须以
格式指定有效的生命周期阶段或目标答案 0 :(得分:6)
使用引号可以提供帮助,尤其是对于实际的PowerShell代码。但是,您只是尝试使用常规命令。您可以使用stop-parsing parameter
使PowerShell解析器不会误解代码Windows PowerShell 3.0中引入的停止解析符号(
--%
), 指示Windows PowerShell不要将输入解释为 Windows PowerShell命令或表达式。在Windows PowerShell中调用可执行程序时,请放置 在程序参数之前停止解析符号。这种技术是 比使用转义字符更容易防止误解。
所以对于你的命令,你也可以这样做。
mvn --% clean install -"Denunciate.skip"
如果确实混合了变量,那么只需根据需要移动停止解析器。
答案 1 :(得分:1)
通过反复试验,这对我有用(我将Denunciate.skip作为一个字符串处理,用引号括起来)
mvn clean install -"Denunciate.skip"
答案 2 :(得分:0)
我觉得我必须确认并添加到developer747的答案中。双引号需要完全包装每个参数,以便PowerShell停止处理参数内容。 (不要像在def bool():
global bool
bool = True
def func():
while bool:
print("Everything's ok!")
break
bool()
func()
中那样在参数中加双引号。)
在PowerShell提示符下:
-foo.bar="baz"
function detect() { write-host "in detect"; write-host "arg 0: $($args[0])"; write-host "arg 1: $($args[1])"; } exit detect "-foo.bar=baz"
在PowerShell提示符下:
in detect
arg 0: -foo.bar=baz
arg 1:
function detect() { write-host "in detect"; write-host "arg 0: $($args[0])"; write-host "arg 1: $($args[1])"; } exit detect -foo.bar=baz
在PowerShell提示符下:
in detect
arg 0: -foo
arg 1: .bar=baz
function detect() { write-host "in detect"; write-host "arg 0: $($args[0])"; write-host "arg 1: $($args[1])"; } exit detect -foo.bar="baz"
要将双引号从CMD传递到PowerShell,我必须在它们前面加上反斜杠(而不是插入符号!),
在CMD提示符下:
in detect
arg 0: -foo
arg 1: .bar=baz
powershell -Command function detect() { write-host "in detect"; write-host "arg 0: $($args[0])"; write-host "arg 1: $($args[1])"; } exit detect \"-bar.foo=baz\"