我想在 TFS Build Server 上使用 Maven 构建我的 Java 项目。 TFS 构建定义在工作流程中使用 invokeprocess。 invokeprocess 能够运行 powershell 脚本和命令批处理文件。
在 Windows 命令提示符下使用“
mvn assembly:assembly -P prod
”命令,Maven 构建成功。但在 powershell 中没有成功。 (我通过远程连接到服务器并在 powershell ise 上执行)(作为普通用户或管理员)
我在 Windows 2012 Standart 64 位机器上安装了 Maven 3.1.1 和 Java Dev Kit 6 update 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
maven 设置.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>
以下是我的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中的输出:
maven 如何在 powershell 中工作?或者有什么办法吗?
您不需要 Invoke-Expression,请参阅我的博客文章: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"
遇到同样的问题,发现你(只需)必须以管理员身份启动Powershell..