2014-02-20 2 views
6

TFS 빌드 서버에서 내 Java 프로젝트를 maven으로 빌드하려고합니다. TFS 빌드 정의는 워크 플로우에서 invokeprocess를 사용합니다. invokeprocess powershell 스크립트 및 명령 배치 파일을 실행할 수 있습니다.Maven은 cmd에서는 작동하지만 powershell에서는 작동하지 않습니다.

Windows 명령 프롬프트에서 "mvn assembly:assembly -P prod"명령으로 Maven 빌드가 성공했습니다. 그러나 powershell에서는 성공하지 못합니다. (원격 서버에 연결하여 powershell ise에서 실행) (일반 사용자 또는 관리자로)

Windows 2012 Standart 64 비트 시스템에 Maven 3.1.1 및 Java Dev Kit 6 업데이트 45를 설치했습니다. 우리는 NTLM 인증과 프록시를 사용합니다.

환경 설정 : 내가 구성을 다음 정의 된

JAVA_HOME  C:\Program Files\Java\jdk1.6.0_45 

M2   %M2_HOME%\bin 

M2_HOME  C:\Program Files\Apache Software Foundation\apache-maven-3.1.1 

경로 :

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;%TFSPowerToolDir%;%BPADir%;%M2%;%JAVA_HOME%\bin 

받는다는 Settings.XML이는 :

<settings> 
<proxies> 
<proxy> 
    <active>true</active> 
    <protocol>http</protocol> 
    <host>proxy.xxx.entp</host> 
    <port>8080</port> 
    <username>myuser</username> 
    <password>mypassword</password> 
    <nonProxyHosts>*.xxx.entp|localhost</nonProxyHosts> 
</proxy> 
</proxies> 
</settings> 

다음 내 powershe입니다 LL 스크립트 :

please click the image of output powershell

방법 PowerShell의 작품을 받는다는하기 :

# mvn clean install 
# mvn assembly:assembly –P prod 
Set-ExecutionPolicy Unrestricted -Force 
$mvnArgs1 ="mvn assembly:assembly –P prod -Dmaven.test.skip=true".replace('-P','`-P').replace('-D','`-D') 
Invoke-Expression $mvnArgs1 

이 다음은 PowerShell의 출력입니까? 아니면 어쨌든?

+0

그늘진 웹 사이트에 이미지를 업로드하는 대신 질문과 함께 이미지를 포함하십시오. –

+0

[Microsoft Powershell 내에서 \ mvn -D \'인수를 사용하여 Maven을 실행할 수 없음] (http://stackoverflow.com/questions/6347985/cannot-run-maven-using-mvn-d-argument-within- microsoft-powershell) – ArtB

답변

11

당신은, 호출 표현이 필요 참조 내 블로그 게시물하지 않습니다 귀하의 경우 http://blogs.msdn.com/b/powershell/archive/2011/06/03/invoke-expression-considered-harmful.aspx

을, 단지 거의 정확하게 당신이 cmd를에서와 같은 명령을 실행 (당신이 아마 따옴표를 추가 할 필요가 밝혀) :

mvn assembly:assembly -P prod "-Dmaven.test.skip=true" 
+1

간단히 말하자면 각 -D 매개 변수는 자체 따옴표로 묶어야합니다. "-Dfile = $ file" "-Durl = $ url" – endian

관련 문제