Не удается найти файл build.xml при запуске ant через скрипт оболочки - PullRequest
1 голос
/ 22 сентября 2011

Я использую оболочку bash, запущенную на Cygwin в Windows 7. У меня есть это в моем скрипте 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 Ответ

2 голосов
/ 05 декабря 2011

Проблема в том, что муравей не знает о путях в стиле Cygwin. Обратите внимание, что ant жалуется, что не может найти \ cygdrive \ c \ selenium \ build.xml. Это потому, что / cygwin понимается только оболочкой Cygwin.

Что вам нужно сделать, это передать путь в стиле DOS муравью. Так что замени

BUILDFILE=$SCRIPT_DIR/build.xml

с

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

Или чтобы сделать это немного более независимым от платформы, используйте пути в стиле Java

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