Question

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?

Was it helpful?

Solution

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"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top