如何在powershell命令中处理点?

时间:2015-07-01 16:24:59

标签: maven powershell powershell-v3.0

以下命令在命令行中运行

mvn clean install -Denunciate.skip 

但在powershell中出现了错误

[错误]未知的生命周期阶段“.skip”。您必须以

格式指定有效的生命周期阶段或目标

3 个答案:

答案 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\"