Maven 函数参数名中的点
powershell中是否可以使用带点的参数名?显而易见的方法-请参见Maven 函数参数名中的点,maven,powershell,maven-3,powershell-3.0,Maven,Powershell,Maven 3,Powershell 3.0,powershell中是否可以使用带点的参数名?显而易见的方法-请参见Dmaven.failsafe.debug失败: function mvn-failsafe-debug { param ( [string] $Dmaven.failsafe.debug="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=y,address=Maven,suspend=n", [param
Dmaven.failsafe.debug
失败:
function mvn-failsafe-debug {
param (
[string] $Dmaven.failsafe.debug="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=y,address=Maven,suspend=n",
[parameter(Position=0, ValueFromRemainingArguments=$true)]
$args
)
& "$env:M2_HOME\bin\mvn.bat" $args
}
您应该能够使用的符号是大括号
${Dmaven.failsafe.debug}
当名称包含特殊字符时使用此选项。输入通常是定义变量的首选方法 。
第2.3.4节参数说明
因此,点实际上不是有效的参数名称字符
有趣的是,可以用点定义参数,如${…}
param (
[string] ${Dmaven.failsafe.debug}
)
PowerShell允许进行上述操作。但在调用命令时很难指定这样的参数名
一些实验:
function Test-ParameterWithDots {
param(
[string]${Parameter.With.Dots}
)
"Parameter : ${Parameter.With.Dots}"
}
# OK
Test-ParameterWithDots value1
# not OK
Test-ParameterWithDots -Parameter.With.Dots value2
# workaround with splatting
$params = @{ 'Parameter.With.Dots' = 'value3' }
Test-ParameterWithDots @params
输出:
Parameter : value1
Parameter : .With.Dots
Parameter : value3
因此,通过spatting,我们仍然可以指定这样一个参数名。现在没有时间去看,但还有另一个问题,我认为讨论的结果是,在某些情况下,powershell解析器很容易对此感到困惑。是的,我将其用作解决方法
函数mvn failsafe debug{param([string]$Dmaven_failsafe_debug=“-Xdebug-Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_shmem,server=y,address=Maven,suspend=n“,[parameter(Position=0,ValueFromRemainingArguments=$true)]$resists)&“$env:M2_HOME\bin\mvn.bat”`-Dmaven.failsafe.debug=$Dmaven\u failsafe}
Parameter : value1
Parameter : .With.Dots
Parameter : value3