通过shell脚本运行ant时无法找到build.xml文件

时间:2011-09-22 14:14:09

标签: bash ant cygwin

我在Windows 7上使用在Cygwin上运行的bash shell。我在我的bash脚本中有这个,它试图根据当前正在执行的脚本的位置找出构建文件的位置...

SCRIPT_DIR="$( cd -P "$( dirname "$0" )" && pwd )"
BUILDFILE=$SCRIPT_DIR/build.xml
ant -buildfile $BUILDFILE -Dbuildtarget=$1 -Dmodule="$2" -Dproject=$3 -Dnolabel=true -DFirefox=$4 -DInternetExplorer=$5 -DGoogleChrome=$6 Selenium4

但是,即使文件存在,我也会收到“无法找到构建文件错误”

$ sh c:/selenium//run_client_tests.sh prod "\Critical Path\Live\QX" MyProj true false false
cygwin warning:
  MS-DOS style path detected: c:/selenium//run_client_tests.sh
  Preferred POSIX equivalent is: /cygdrive/c/selenium/run_client_tests.sh
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Started script
Buildfile: \cygdrive\c\selenium\build.xml does not exist!
Build failed

ls显示文件在那里......

dev@selenium_w7 /cygdrive/c/selenium
$ ls /cygdrive/c/selenium/build.xml
/cygdrive/c/selenium/build.xml

dev@selenium_w7 /cygdrive/c/selenium
$ ls c:/selenium/build.xml
c:/selenium/build.xml

1 个答案:

答案 0 :(得分:2)

这里的问题是蚂蚁不了解Cygwin风格的路径。请注意,ant抱怨它无法找到\ cygdrive \ c \ selenium \ build.xml。那是因为/ cygwin只能被Cygwin shell理解。

您需要做的是将DOS样式的路径传递给ant。所以替换

BUILDFILE=$SCRIPT_DIR/build.xml

BUILDFILE=`cygpath -w $SCRIPT_DIR/build.xml`

或者为了使这与平台无关,使用Java风格的路径

BUILDFILE=`cygpath -m $SCRIPT_DIR/build.xml`