Microsoft Powershell 내에서 'mvn -D' 인수를 사용하여 Maven을 실행할 수 없지만 명령 프롬프트에서 작동합니다.
나는 명령줄에서 우리의 웹 프로젝트를 구축하려고 하지만 테스트를 건너뜁니다.명령어를 사용하고 있습니다.mvn clean install -Dmaven.test.skip=true
.
기존의 흑백 명령 프롬프트(일명 DOS 셸)에서 명령을 실행하면 명령이 작동하지만 "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(윈도우 7)에서 실행되고 있습니다.
PowerShell에서 콘솔 EXE로 전달할 인수를 해석하는 과정에서 문제가 발생할 경우echoargs.exe
PowerShell Community Extensions와 함께 제공되는 유틸리티입니다.이 도구를 사용하여 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>
단답형 - 견적 사용'-Dmaven.test.skip=true'
일반적으로 Maven, svn 등에 Powershell을 사용하는 경우 대시(-)로 시작하는 인수를 피해야 합니다.파워셸의 탈출 캐릭터는 백틱입니다.따라서 mvn archype: create '-DgroupId=blah'-DartifactId=blah., '-'는 파워셸 콘솔에서 메이븐을 실행할 때 백체크로 탈출해야 하는 특수 문자입니다.
다음은 저에게 도움이 됩니다.
$mvnArgs1 ="mvn test -X -Dmaven.test.skip=true".replace('-D','`-D')
Invoke-Expression $mvnArgs1
-D는 일종의 특수 문자이고 탈출이 필요한 것처럼 보입니다.
또한 –X는 정상적으로 작동하며 탈출할 필요가 없습니다.큰따옴표(예: ")를 사용하는 경우 ""를 사용해야 하는 경우 replace 명령에서 단일 따옴표를 사용합니다.
Windows 7에서 Powershell 2.0(2.0.1.1)을 사용하고 있습니다.
PowerShell에서 하이픈(-)은 Linux 터미널로 간주되지 않으므로 각 하이픈 앞에 이(')를 사용하여 이스케이프해야 합니다.
예:-
아래 명령은 PowerShell에서 작동하지 않습니다.
mvn clean install -Dmaven.test.skip=true
대신 아래와 같이 하이픈(-) 앞에 이것(')을 추가해야 합니다.
mvn clean install `-Dmaven.test.skip=true
언급URL : https://stackoverflow.com/questions/6347985/cannot-run-maven-using-mvn-d-argument-within-microsoft-powershell-but-works
'programing' 카테고리의 다른 글
"cannot run in wd"로 인해 Npm 설치 실패 (0) | 2023.08.22 |
---|---|
on과 live 또는 bind의 차이점은 무엇입니까? (0) | 2023.08.22 |
SQL 저장 프로시저에 목록 전달 <> (0) | 2023.08.22 |
jQuery AJAX 요청의 상대 URL 대 절대 URL (0) | 2023.08.22 |
자바스크립트에서 쿼리 문자열 매개 변수를 삭제하려면 어떻게 해야 합니까? (0) | 2023.08.22 |