Maven works in cmd but not powershell

无人久伴 提交于 2019-12-05 20:04:59

问题


I want to build with maven my java projects on TFS Build Server. TFS Build Definition use invokeprocess in workflow. invokeprocess able to run powershell script and command batch file.

Maven build successed with "mvn assembly:assembly -P prod" command in windows command prompt. But does not success in powershell. (I connected to server with remote and executed on powershell ise) (either as a regular user or as an administrator)

I installed Maven 3.1.1 and Java Dev Kit 6 update 45 on Windows 2012 Standart 64-bit machine.We use NTLM authentication and proxy.

I defined following configuration:

Environment settings:

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

Path:

  %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

maven 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>

The following is my powershell script:

# 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

The following is the output in powershell:

please click the image of output powershell

how to maven works in powershell? Or any way?


回答1:


You don't need Invoke-Expression, see my blog post: http://blogs.msdn.com/b/powershell/archive/2011/06/03/invoke-expression-considered-harmful.aspx

In your case, just run the command almost exactly like you would in cmd (it turns out you probably need to add some quotes):

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


来源:https://stackoverflow.com/questions/21902668/maven-works-in-cmd-but-not-powershell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!