«Dir» Ant FileSet отсутствует по абсолютному пути при использовании Mapper

StackOverflow https://stackoverflow.com/questions/4859072

  •  27-10-2019
  •  | 
  •  

Вопрос

Я пытался написать задачу ANT, чтобы «скомпилировать» сценарии нахлывания в моем проекте, используя задачу Apply, но я продолжал получать ошибку «нет такого файла или каталога». Я думал, что это могло быть вызвано пространствами в BuildPath, поэтому я пережил проблему перемещения проекта только для того, чтобы обнаружить, что 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, и я заметил, что Mapper преобразует такие пути ...

/Users/me/documents/programming/workspace/project/SRC/java/com/proj/web/page/template/template.scss

... в это ...

/SUSERS/me/documents/programming/workspace/project/java/com/proj/web/page/template/template.css

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top