Sle*_*led 43 windows powershell command-line command maven
我试图从命令行构建我们的Web项目,但跳过测试.我正在使用该命令mvn clean install -Dmaven.test.skip=true.
当我从传统的黑白命令提示符(也称为DOS shell)运行该命令时,该命令有效,但是当我从"Windows PowerShell"命令运行它时,我收到以下错误:
[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-
artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources,
compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepar
e-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy, pre-clean, clean, po
st-clean. -> [Help 1]
造成这种差异的原因是什么让PowerShell的行为与传统的命令提示符相似?
这是在Windows 7上运行的.
Kei*_*ill 105
当您遇到PowerShell对要传递给控制台EXE的参数的解释时出现问题时,请尝试使用PowerShell社区扩展echoargs.exe附带的实用程序.使用此工具,您可以看到PowerShell如何为EXE提供参数,例如:
PS> echoargs mvn clean install -Dmaven.test.skip=true
Arg 0 is <mvn>
Arg 1 is <clean>
Arg 2 is <install>
Arg 3 is <-Dmaven>
Arg 4 is <.test.skip=true>
PS> echoargs mvn clean install '-Dmaven.test.skip=true'
Arg 0 is <mvn>
Arg 1 is <clean>
Arg 2 is <install>
Arg 3 is <-Dmaven.test.skip=true>
Run Code Online (Sandbox Code Playgroud)
简短回答 - 使用引用'-Dmaven.test.skip=true'
以下适用于我.
$mvnArgs1 ="mvn test -X -Dmaven.test.skip=true".replace('-D','`-D')
Invoke-Expression $mvnArgs1
Run Code Online (Sandbox Code Playgroud)
它看起来像-D是一种特殊的角色,需要转义.
另请注意-X工作正常,不需要转义.注意在replace命令中使用单引号,如果你使用双引号(即")",你需要使用``.
我在Windows 7上使用Powershell 2.0(2.0.1.1)
| 归档时间: |
|
| 查看次数: |
12121 次 |
| 最近记录: |