我需要从我的JAVA代码中调用ANT脚本来替换xml文件中的密码。从cmd行执行时,我的ANT脚本运行正常,但从Java代码调用时它不起作用。
使用简单的例子清楚:
在我的javaAntCall.xml中 -
<replaceregexp file="C:\SmartIXImpl\SmartIX_TEST\tools\test.properties"
match="OldProperty=(.*)"
replace="NewProperty=\1"
byline="true"
/>
我的java代码有:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c",System.getProperty(TEST_HOME_PROPERTY) +"/tools/ant/bin/ant",
"-f",System.getProperty(TEST_HOME_PROPERTY)+"/tools/javaAntCall.xml");
pb.redirectError();
pb.directory(new File("C:/"));
Process p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
logger.error("*******Test output is");
while ((line = br.readLine()) != null) {
logger.error("*******"+line);
}
int exitValue = p.waitFor();
logger.error("*******Exited with "+exitValue);
使用执行此Java代码时,我的ant脚本中的复制等命令在从Java调用时起作用,但在尝试使用replaceregexp时,我得到的exitValue为1.任何帮助解决这个问题都将不胜感激!