2014-02-20 6 views
6

Я хочу построить с maven мои проекты java на сервере сборки TFS. TFS Build Definition использует invokeprocess в рабочем процессе. invokeprocess способен запускать скрипт powershell и командный командный файл.Maven работает в cmd, но не powershell

Maven build с командой «mvn assembly:assembly -P prod» в командной строке Windows. Но это не успех в powershell. (Я подключился к серверу с удаленным и выполнил на powershell ise) (либо как обычный пользователь, либо как администратор)

Я установил Maven 3.1.1 и Java Dev Kit 6 update 45 на Windows-Standart 64-разрядную машину. Мы используем аутентификацию 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 

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> 

Следующая моя powershe Л.Л. сценарий:

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

please click the image of output powershell

как Maven работы в PowerShell? Или любым способом?

+0

Пожалуйста, добавьте изображение с вашим вопросом, а не загрузите его на какой-нибудь теневой сайт. –

+0

Возможный дубликат [Невозможно запустить Maven с использованием аргумента 'mvn -D \' в Microsoft Powershell] (http://stackoverflow.com/questions/6347985/cannot-run-maven-using-mvn-d-argument-within- microsoft-powershell) – ArtB

ответ

11

Вам не нужно Invoke-Expression, см мой пост в блоге: http://blogs.msdn.com/b/powershell/archive/2011/06/03/invoke-expression-considered-harmful.aspx

В вашем случае, просто запустите команду почти так же, как вы бы в ЦМД (получается, вы, вероятно, нужно добавить некоторые цитаты) :

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

Как быстрая заметка, каждый параметр -D должен быть окружен в своих собственных котировках: "-Dfile = $ file" "-Durl = $ url" – endian

Смежные вопросы