2012-06-04 3 views
1

У меня возникла странная проблема в ANT-файле, который я использую для создания Java-приложения. При создании файла банка, в конце концов, я включаю файлы ресурсы (изображения, шрифты и конфигурационные файлы) в JAR, используя zipfileset, как это:неправильная упаковка JAR в файле ant с zipfileset

    <zipfileset dir="src/res" prefix="res"/> 
       <zipfileset dir="src/res/images" prefix="res/images" /> 
       <zipfileset dir="src/res/images/Bubbles" prefix="res/images/Bubbles"/> 
       <zipfileset dir="src/res/images/Clocks" prefix="res/images/Clocks"/> 
       <zipfileset dir="src/config" prefix="res/config"/> 
       <zipfileset dir="src/ontology" prefix="res/ontology"/> 

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

res 
|-images 
| |-Bubbles 
| |-Clocks 
|-fonts 
|-config 
|-ontology 

Так реплицируется в JAR, я использую префиксный параметр в zipfileset. Дело в том, что я получаю дублированные изображения в res/images и triple images (3 копии одного и того же изображения) в любой папке res/images/Bubbles и res/images/Clocks, которые, с другой стороны, являются 2 и 3 уровня соответственно. Рез/конфигурации и разрешения/онтология не являются правильными, не дублированные файлы там ... скриншот, чтобы увидеть, что я имею в виду:

enter image description here

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

С уважением, Alex

ответ

3

ant фактически делает именно то, что вы сказали, что это сделать. Вы сказали ему:

  • пакет всех файлов под src/res и привязать их к res.
  • упаковать все файлы в src/res/images и сопоставить их с res/images
  • пакет все файлы под src/res/images/Bubbles и к ним под res/images/Bubbles

Теперь давайте предположим, что у вас есть src/res/images/Bubbles/activity_bubble_orange.png файлы. Этот файл содержится в первом zipfileset, втором zipfileset и третьем zipfileset. Эрго будет упакован три раза.

Чтобы сделать то, что вы хотите, вам нужно сделать один <zipfileset dir="src/res" prefix="res" />, но фильтровать содержимое, используя/исключая фильтры.

См. Здесь: http://ant.apache.org/manual/Types/zipfileset.html где говорится, что это тип набора файлов. и здесь: http://ant.apache.org/manual/Types/fileset.html, чтобы увидеть, как вы указываете, включает/исключает фильтр для набора файлов.

+0

Понял работает спасибо, Михай – AlejandroVK

+0

Добро пожаловать :) –

1

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

включает в себя = "* /. *"

<zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/>

В приведенном выше примере, я в том числе * .html рекурсивно.

Сукбер Dhillon Addteq

+0

Да, я сделал что-то очень похожее, спасибо слишком Сукбер – AlejandroVK

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