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

Как я могу разархивировать определенную папку с помощью 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>

Любые идеи?

Ответы

Ответ 1

Вы можете использовать mapper в задаче unzip для изменения записанных путей.

<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>

Ответ 2

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

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

Ответ 3

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