如何从ant脚本中设置path环境variables
如何从ant脚本中设置path环境variables
这是一个<exec>
任务吗?
您可以在运行<exec>
任务时设置环境variables:
<exec executable="${my.command}"> <env key="foo" value="bar"/> <arg line="some value"/> </exec>
您可以使用<property environment="env"/>
展开path:
<property environment="env"/> <exec executable="${my.command}"> <env key="PATH" value="${env.PATH}:${my.directory}"/> </exec>
如果这是针对某个需要环境variables的自定义任务,但是不允许您在任务中设置环境variables(如果未设置该环境variables),则可以尝试将其设置为:
<property environment="env"/> <property name="env.foo" value="bar!bar"/>
这可能会将名为foo
的环境variables设置为bar!bar!
的值bar!bar!
。 我记得这件事,但没有得到它的工作。
你可以做的另一件事是有一个ant脚本执行另一个,并有第一个ant脚本设置环境值。 当我必须设置ANT_OPT
时,我这样做了。
在ant里,属性是不变的,所以大卫的build议如上:
<property name="env.foo" value="bar!bar"/>
将无法工作。
但variables是可变的,所以这个工作:
<variable name="env.foo" value="bar!bar"/>
这完成了工作,但似乎是一个卑鄙的伎俩。
所以对于你的具体问题,试试
<variable name="env.PATH" value="some:custom:value"/>
您可以使用setx命令设置环境variables。
有关setx命令的帮助,请参阅http://ss64.com/nt/setx.html
<exec executable="setx.exe"> <arg line="Path C:\jdk1.5.0_12\bin"/> <arg line="/m"/> </exec>
我发现它的工作原理是引用variables的值
<exec executable="setx"> <arg line="Path "${env.Path};c:\testPath"" /> <arg line="/m" /> </exec>
要通过Ant设置环境variables,请尝试调用exec任务并设置命令行值。 顺便说一句,我没有尝试过,但它应该工作。
因为我没有足够的声望评论<variable ...
build议我的评论作为答案…: – /
在(“更新”) ant-contrib (额外的ANT包)中,任务不被称为<variable ...
but <var ...
!
(但它对我来说不起作用,因为我认为对env.*
(由<property environment="env" ... />
任务创build)的Java操作的控制只与评估这些任务/ 不会自动“同步”到OS环境variables的 Java属性)
您可以使用扩展path:
然后你可以执行例如sh
从ant
export
环境variables:
<property environment="env"/> <exec executable="sh"> <arg value="-c"/> <arg value="export PATH=${env.Path}:${myPath}"/> </exec>
或者执行你的命令并设置env
的value
,如下所示:
<property environment="env"/> <exec executable="${your.command}"> <env key="PATH" value="${env.PATH}:${your.directory}"/> </exec>