2009-06-17 3 views
9

Каков самый простой способ переместить все из целевого каталога?Объект Ant для перемещения каталогов из другого каталога

У меня есть этот basedir/parentdir/<subdir>. У меня много разных <subdir>. Мне нужно переместить их на тот же уровень, что и parentdir, так что он станет basedir/<subdir>. Теперь каждый <subdir> содержит глубокое дерево многих других подкаталогов и файлов, включая пустые подкаталоги.

Я попытался следующие:

<move todir="basedir"> 
    <fileset dir="parentdir"> 
     <include name="**/*.*" /> 
    </fileset> 
</move> 

Это не спасало пустые каталоги - значение после того, как в движении, все <subdir> отсутствуют пустые подкаталоги. «Двигаться», якобы копии emptysubdirectories по умолчанию, поэтому я попытался следующие следующий:

<move todir="basedir"> 
    <fileset dir="parentdir"> 
     <include name="**/*" /> 
     <include name="**/*.*" /> 
    </fileset> 
</move> 

Хотя мне удалось переместить пустые подкаталоги, странное дело в том, что все непосредственные подкаталоги все <subdir>, копируется в basedir , Каждый <subdir> имеет src, test и build. Они теперь сидят в basedir, а также в их оригинальном перемещенном <subdir>.

Я уверен, что делаю что-то не так, но я не знаю, что. Я приближаюсь к чему-то неправильному?

+0

Вы не используете расплющить = правда, не так ли? –

+0

Вы, вероятно, должны перенести их во временное местоположение сначала ... –

+0

@ Джон: Нет, я хочу сохранить структуру. @mike: На самом деле, «parentdir» _is_ временное место для меня: D – aberrant80

ответ

10

Попробуйте

<project name="moveproject" basedir="." default="moveDirs"> 
<target name="moveDirs"> 
    <move todir="${basedir}" includeEmptyDirs="yes" verbose="true"> 
     <fileset dir="parentdir" > 
      <include name="**/*" /> 
     </fileset> 
    </move> 
</target> 
</project> 
+0

includeEmptyDirs должен быть истинным по умолчанию, поэтому я его не установил. Кроме того, пример использования Ant doc includeemptemptists = "false" вместо yes/no ... странный. **/* был правильным. Я оставил свои старые цели и переписал большую часть этого. Я думаю, что у моей первоначальной цели, которая создавала родительский диск, были проблемы. Скопировало ваше, и все работает по назначению. Благодаря! – aberrant80

+0

Что делать, если я не знаю имя parentdir? –

Смежные вопросы