"Dir" набора файлов Ant отсутствует в абсолютном пути при использовании картографа - PullRequest
0 голосов
/ 01 февраля 2011

Я пытался написать задачу Ant для «компиляции» сценариев Sass в моем проекте, используя задачу apply, но я продолжал получать ошибку «Нет такого файла или каталога». Я подумал, что это могло быть вызвано пробелами в пути сборки, поэтому я попытался переместить проект, но обнаружил, что Ant, похоже, пропускает корневой каталог набора файлов, когда возвращает путь. Вот как выглядит цель:

<target name="sass-compile" depends="properties">
    <apply executable="sass">
        <srcfile />
        <targetfile />

        <fileset dir="${project.src.dir}" includes="**/*.scss"  />
        <globmapper from="*.scss" to="*.css" />
    </apply>
</target>

Чтобы помочь в устранении неполадок, я переключил исполняемый файл с sass на echo и заметил, что преобразователь преобразует пути следующим образом ...

/ Пользователи / мне / Документы / Программирование / рабочая область / проект / 1008 * ЦСИ * / Java / COM / проектируемый / веб / страница / шаблон / Template.scss

... в это ...

/ Пользователи / мне / Документы / Программирование / рабочая область / проект / Java / COM / проектируемый / веб / страница / шаблон / template.css

Обратите внимание, что в пути к целевому файлу отсутствует каталог src. Я вижу ошибку здесь или это как-то ожидается? Я хотел бы знать, что здесь происходит. Я также попытался с помощью regexpmapper и filtermapper с replacestring. Результат тот же.

Я использую Ant 1.7.1, который поставляется в комплекте с Eclipse Helios, который я использую на Mac. Я также попробовал Ant 1.8 на Mac и Linux. Ничего не работает У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

Это нормальное поведение. Картографы используют относительные пути, а не абсолютные. Путь будет относительно рабочего (возможно, базового) каталога, который в вашем случае является родительским для каталога src.

Преобразователь apply task (glob) предоставляет пути относительно каталога, указанного в его атрибуте dest:

Один картограф указывает цель файлы относительно атрибута dest для проверки зависимостей. Если дест указан атрибут, который будет использоваться в качестве базового каталога для разрешения относительные пути, возвращаемые картограф. Хотя бы один набор файлов или список файлов обязателен.

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

Опции, которые приходят на ум:

  • Используйте basedir проекта вместо project.src.dir (может работать)
  • Укажите каталог, используя <apply dest="src" ... (лучше)
0 голосов
/ 01 февраля 2011

Похоже, что маппер работает с содержимым ${project.src.dir}, исключая саму папку.

Можете ли вы попробовать указать родительскую папку src в ${project.src.dir}, скажем ${basedir} и посмотреть, дает ли она желаемый результат?

...