Aat使用-f执行含有空格的目录注意事项

在dos下执行ant -f  C:\Program Files\build.xml 时

会报C:\Program does not exist!

原因是目录 C:\Program Files含有空格

解决的办法是在目录上加上双引号,如下:

ant -f  “C:\Program Files”\build.xml 或者ant -f  “C:\Program Files\build.xml” 都可以

 

如果build.xml 中有目录需要转换,可以使用"C:\Program Files",来给目录加上双引号

 

但是在使用Runtime.getRuntime().exec 时,目录空格不能简单的使用双引号解决,最好使用exec的第二种重载方法

 

package cc.bb;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class TTT {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("aaad");
		String order1 = "E:/apache-ant-1.9.1/bin/ant.bat";
		String order2 = "C:/Program Files/test/build.xml";
		 try {
			 String command = order1;
			 System.out.println(command);
			 String[] comStr = new String[]{order1, "-f" ,order2};
			 Process p = Runtime.getRuntime().exec(comStr,null ,null);
			  InputStream is = p.getInputStream();
			  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
			  String line;
			  while((line = reader.readLine())!= null){
			   System.out.println(line);
			  }
			  p.waitFor();
			  is.close();
			  reader.close();
			  p.destroy();  
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 build.xml 如下:

<?xml version="1.0" ?>
<project name ="antPro" default ="getBaseDir">
        <target  name="getBaseDir">
               <echo message="The base dir is: ddddddd"/>
        </target>
</project>

 

在eclipse运行结果如下:

aaad
E:/apache-ant-1.9.1/bin/ant.bat
Buildfile: C:\Program Files\test\build.xml

getBaseDir:
     [echo] The base dir is: ddddddd

BUILD SUCCESSFUL
Total time: 0 seconds

你可能感兴趣的:(ant,目录空格,加双引号)