在命令行中覆盖ANT_HOME属性

时间:2015-03-31 04:18:01

标签: java ant

我正在编写一个Java RCP应用程序,我从用户输入ANT_HOME的文件路径,然后评估版本以进行验证。 但是,当我将ANT_HOME属性设置为系统属性时,评估失败,因为ant.bat脚本包含

rem %~dp0 is expanded pathname of the current script under NT
set DEFAULT_ANT_HOME=%~dp0..

if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%

我不需要更新我的ANT_HOME,但需要覆盖该值,以便可以为我的应用程序评估用户输入的路径的有效/无效ant版本。

即使我使用命令行,也会出现此问题。见下面的截图。

C:\Users\tunnikrishnan>echo %ANT_HOME%
E:\tools\apache-ant-1.8.4

C:\Users\tunnikrishnan>E:\tools\apache-ant-1.6.5\bin\ant.bat -version
Apache Ant(TM) version 1.8.4 compiled on May 22 2012
C:\Users\tunnikrishnan>

有人可以指导我如何解决此问题?

1 个答案:

答案 0 :(得分:0)

更改ProcessBuilder实例的环境变量。

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("ANT_HOME", getUserAntHome());
pb.redirectErrorStream(true);
Process p = pb.start();

其中getUserAntHome()从用户输入中获取值。