Как разархивировать определенную папку?

Как распаковать определенную папку с помощью Ant?

В частности, я скачал apache-tomcat-6.0.29.zip, который содержит папку «apache-tomcat-6.0.29». Я хочу, чтобы Ant распаковывал все под «apache-tomcat-6.0.29», но не включал «apache-tomcat-6.0.29» в верхнюю часть иерархии.

Я пробовал кучу вещей, но я не могу заставить его работать.

Вот моя последняя попытка:

<unzip dest="${release.dir}/image/tomcat" src="${tomcat.zip}">
    <patternset>
        <include name="apache-tomcat-6.0.29/*"/>
    </patternset>
</unzip>

Любые идеи?


person sproketboy    schedule 22.10.2010    source источник


Ответы (2)


Вы можете использовать сопоставитель в задаче распаковки, чтобы изменить записанные пути.

<unzip dest="${release.dir}/image/tomcat" src="${tomcat.zip}">
    <patternset>
        <include name="apache-tomcat-6.0.29/*"/>
    </patternset>
    <mapper>
        <globmapper from="apache-tomcat-6.0.29/*" to="*"/>
    </mapper>
</unzip>
person martin clayton    schedule 22.10.2010
comment
Спасибо. Это сработало: ‹mapper type=glob from=apache-tomcat-6.0.29/* to=*/› - person sproketboy; 22.10.2010
comment
Вам также не нужен раздел набора шаблонов. - person sproketboy; 22.10.2010
comment
Я могу уйти с папкой, но ни один из моих файлов внутри подпапки не копируется в каталог назначения. Любая идея, что может быть причиной? Например: в приведенном выше примере ни один из файлов в папке bin не копируется, а папка bin пуста. Я использую материал точно так же, как вы упомянули. - person Balkrishan Nagpal; 01.04.2013
comment
Что делать, если я не знаю имя корневой папки? Например. будущие версии. - person Ondra Žižka; 29.04.2013

Следующее работает до тех пор, пока в архиве tomcat есть один каталог.

<untar src="${release.dir}" dest="${tomcat.tar.gz}" compression="gzip">
  <cutdirsmapper dirs="1" />
</untar>
person attiand    schedule 27.03.2014