ant: jar и zipfileset - копируют файлы из одного JAR в другой - PullRequest
3 голосов
/ 01 октября 2010

В настоящее время я делаю это:

<jar update="yes"
     jarfile="${pwd}/dist/${release}_installer.jar">
   <zipfileset src="${pwd}/dist/app.jar" includes="com/izforge/izpack/panels/**"/>
   <zipfileset src="${pwd}/dist/app.jar" includes="com/xyz/img/logo.png"/>
</jar>

Мой существующий установщик JAR обновляется и включает файлы по мере необходимости, извлеченные из приложения JAR.

Пока все хорошо.

Однако я хочу изменить поведение так, чтобы путь к файлу изображения отличался от того, из которого копируется:

В настоящее время:

com/izforge/izpack/panels/MyIzPanel.class
com/xyz/img/logo.png

Что я хочу:

com/izforge/izpack/panels/MyIzPanel.class
blah/img/logo.png

Поэтому мне нужно скопировать файлы, но использовать <zipfileset> и <jar> таким образом, чтобы я мог изменить структуру каталогов.

Есть ли способ сделать это, кроме разархивирования всего файла копирования содержимого и последующего архивирования его снова?


РЕДАКТИРОВАТЬ:

Ссылка наранее связанный вопрос: муравьиная задача для удаления файлов из jar

Ответы [ 3 ]

5 голосов
/ 01 октября 2010

Вы можете использовать атрибут fullpath:

<zipfileset src="${pwd}/dist/app.jar"
    includes="com/xyz/img/logo.png" fullpath="blah/img/logo.img"/>

Если вам нужно скопировать несколько файлов, вы можете взглянуть на атрибут prefix, например ::

<zipfileset src="${pwd}/dist/app.jar"
    includes="**/*.png" prefix="blah/img"/>
2 голосов
/ 21 октября 2013

Чтобы изменить структуру каталогов внутри архива на лету, вы можете использовать задачу в сочетании с <mappedresources>, например:

<jar file="target.jar" update="true">
  <mappedresources>
    <zipfileset src="source.jar">
      <include name="com/xyz/img/*.png"/>
    </zipfileset>
    <mapper type="glob" from="com/xyz/img/*.png" to="bla/img/*.png" />
  </mappedresources>
</jar>
0 голосов
/ 30 мая 2012

Вам, вероятно, стоит взглянуть на zipgroupfileset , как объяснено здесь .

...