Создавать структуры каталогов во время задачи Ant jar - PullRequest
1 голос
/ 13 марта 2012

Я хочу создать банку со следующей структурой каталогов:

thejar.jar/
    classes/ --> where all classes go
    lib/ --> where all dependencies go
    res/ --> where all non-classpath resources go (scripts, etc.)
    META-INF/

Вот моя задача муравья:

<jar destfile="dist/main/thejar.jar">
    <!-- Create the manifest -->
    <manifest>
        <!-- JAR should be sealed. -->
        <attribute name="Sealed" value="true" />
    </manifest>

    <!-- Copy main build directory to classes/ directory in JAR. -->
    <fileset dir="dist/main/classes" includes="build/main"/>

    <!-- Copy main library directory to lib/ directory in JAR. -->
    <fileset dir="dist/main/lib" includes="lib/main"/>

    <!-- Copy main resources directory to res/ in JAR. -->
    <fileset dir="dist/main/res" includes="res/main"/>
</jar>

Если я правильно понимаю, это должно быть:

  • Копирование всех встроенных (.class) файлов в build/main в dist/main/classes
  • Копирование всех lib/main зависимостей в dist/main/lib
  • Копирование всех res/main файлов в dist/main/res
  • JARring dist/main/* в thejar.jar

Задача JAR выполняется без ошибок, но когда я иду просмотреть содержимое thejar.jarЯ просто вижу META-INF / (ни одна из подкаталогов, которые я упомянул выше).

Что здесь происходит?Заранее спасибо!

1 Ответ

3 голосов
/ 13 марта 2012

Вы хотите, чтобы задача jar копировала файлы в build/main в dist/main/lib jar, но

<fileset dir="dist/main/classes" includes="build/main"/>

означает упаковывать файлы из dist/main/classes/build/main в файл jar.

Взгляните на пример из документа задачи Ant-Jar:

<jar destfile="${dist}/lib/app.jar">
    <fileset dir="${build}/classes"
             excludes="**/Test.class"
    />
    <fileset dir="${src}/resources"/>
</jar>

(код выше) объединяет все файлы в каталоге $ {build} / classes, а также в каталоге $ {src} / resources в файл с именем app.jar в каталоге $ {dist} / lib.

Чтобы выполнить ваш запрос, я думаю, вы можете скопировать классы, ресурсы и зависимости с помощью задачи <copy> в нужную вам структуру каталогов, а затем выполнить jar для каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...