Maven works in cmd but not powershell

I want to build with maven my java projects on a TFS build server. TFS Build Definition uses invokeprocess in the workflow. invokeprocess can run a powershell script and a command batch file.

Maven command with the command " mvn assembly:assembly -P prod " on the Windows command line. But this is not a success in powershell. (I connected to the server with the 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 a Windows-Standart 64-bit machine. We use NTLM authentication and proxy.

I defined the 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> 

Below 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:

click on powershell output image

how does maven work in powershell? Or in any way?

+6
source share
1 answer

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 in much the same way as in cmd (it turns out you probably need to add some quotes):

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

All Articles