如何从 Ant 'exec' 任务中导出环境变量?
Posted
技术标签:
【中文标题】如何从 Ant \'exec\' 任务中导出环境变量?【英文标题】:How do I export environment variables from the Ant 'exec' task?如何从 Ant 'exec' 任务中导出环境变量? 【发布时间】:2009-11-23 14:57:45 【问题描述】:我在WinXp下使用Ant构建MSVisual c++项目。
要访问独立于计算机的“devenv.com”,我想使用 vsvars32.bat 脚本。 不幸的是,环境变量似乎只在“exec”范围内定义。
例子:
<exec executable='"$env.VS90COMNTOOLSvsvars32.bat/>
<echo message="$DevEnvDir" />
<echo message="$env.DevEnvDir" />
<property environment="env2"/>
<echo message="$env2.DevEnvDir" />
我从来没有得到预期的结果。
如何使用“vsvars32.bat”脚本并访问其环境。变量? 有没有更好的方法来实现这一点?
【问题讨论】:
【参考方案1】:不要直接调用vsvars32.bat
,而是从使用set
将环境设置写入文件的小帮助脚本调用它。
帮助脚本vsenvwrap.bat
:
@echo off
call "%VS90COMNTOOLS%\vsvars32.bat"
set > vsenv.txt
在你的build.xml
调用帮助脚本,然后读取设置文件vsenv.bat
:
<exec executable="vsenvwrap.bat" />
<property file="vsenv.txt" prefix="env2" />
然后您可以在构建过程中删除 vsenv.txt 文件,或者在您的干净目标中删除。
这利用了环境变量列表大多符合 java 属性文件所要求的格式这一事实。
【讨论】:
【参考方案2】:您可以创建一个运行 ant 脚本的小批处理文件,并在该批处理文件中执行 vsvars32.bat,然后再调用 ant。
@echo off
setlocal
set TEMP_HOME=%~dp0
call "%VS90COMNTOOLS%\vsvars32.bat"
call "%ANT_HOME%\bin\ant.bat" %*
endlocal
【讨论】:
以上是关于如何从 Ant 'exec' 任务中导出环境变量?的主要内容,如果未能解决你的问题,请参考以下文章