как добавить полную папку в файл jar с помощью ant

Я хотел бы создать "толстую" банку с муравьем, где у меня есть не только обычные классы, файлы манифеста и т. д., но и моя папка "libs".

Я пробовал с:

<jar destfile="myjar.jar" update="yes" basedir="${libs.dir}"/>

но это добавляет файлы в «libs» в корень файла jar, где я хотел бы иметь саму папку libs в банке (со всем, что она содержит, конечно)

Могу ли я сам создать папку lib в банке и затем добавить файлы в это конкретное место в банке?


person dm76    schedule 18.01.2010    source источник


Ответы (4)


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

<jar destfile="myjar.jar" >
  <fileset dir=".">
    <include name="**/${libs.dir}/**"/>
  </fileset>
</jar>
person Turing    schedule 18.01.2010

Используйте это расширение ant: http://one-jar.sourceforge.net/

Существует также плагин Eclipse: FatJar

person nanda    schedule 18.01.2010

Вы должны сделать что-то вроде следующего. В частности, команда zipfileset. По сути, вы говорите, что хотите создать ${build.name}.jar (вы можете жестко указать путь как «myjar.jar» или что-то в этом роде), а затем добавить различные файлы в JAR.

Надеюсь это поможет!

<jar destfile="${dist}/${build.name}.jar">

    <!-- Generate the MANIFEST.MF file. -->
    <manifest>
        <attribute name="Built-By" value="${user.name}" />
        <attribute name="Release-Version" value="${version}" />
        <attribute name="Main-Class" value="my.lib.Main" />
            <attribute name="SplashScreen-Image" value="TitleScreen.png" />
        <attribute name="Class-Path" value="${classpath}" />
    </manifest>

    <zipfileset dir="${build.dir}" />
    <zipfileset dir="${resources}" />

    <fileset file="${resources}/icons/misc_icons/TitleScreen.png" />
</jar>
person JasCav    schedule 18.01.2010
comment
но с помощью команды набора файлов я должен указать все файлы в папке libs? - person dm76; 18.01.2010
comment
Не набор файлов... ZIPfileset. Ознакомьтесь с описанием здесь — он делает именно то, что вам нужно: ant.apache. org/manual/CoreTypes/zipfileset.html. В нем говорится: «Когда используется атрибут dir, набор zip-файлов заполняется файлами файловой системы, найденными в каталоге dir. (Это похоже на мой пример.) - person JasCav; 18.01.2010