добавление некодовых ресурсов в jar-файл с помощью Ant - PullRequest
22 голосов
/ 01 августа 2009

Я нахожусь в процессе упаковки моего java-приложения в файл jar. Я использую муравей и затмение. Мне нужно включить в jar несколько отдельных не кодовых файлов (xml и txt) прямо в корневой папке, а не в том же месте, что и код.

Я пытаюсь использовать includefile, но, похоже, это не работает, вот моя цель для муравья:

<target name="distribute" depends="compile" includesfile="readthis.txt">
    <jar destfile="${distributionDir}/myjar.jar" >
        <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>           
    </jar>
</target>

Вышеприведенное прекрасно работает, когда я опускаю аргумент includefile. Кроме того, мне нужно добавить несколько файлов без кода. Эти файлы находятся непосредственно в корневой папке проекта в Eclipse, а не в каких-либо пакетах Java.

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

В качестве задачи компиляции или сборки Ant легко может отделить исходный код от скомпилированных классов. Но есть ли способ сделать это и в jar-файле?

Большое спасибо за ваше время!

1 Ответ

37 голосов
/ 01 августа 2009

У вас не должно быть атрибута includesfile в цели для начала, и я подозреваю, что вы все равно неправильно поняли его смысл - идея в том, что файл, который вы указываете с includesfile содержит шаблоны для включения файлов, если вы не хотите помещать их в файл Ant.

Меня поражает, что все, что вам нужно, это дополнительный набор файлов, содержащий нужные вам файлы. Например, для readthis.txt:

<target name="distribute" depends="compile">
  <jar destfile="${distributionDir}/myjar.jar" >
    <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>
    <fileset file="readthis.txt" />
  </jar>
</target>

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

<target name="distribute" depends="compile">
  <jar destfile="${distributionDir}/myjar.jar" >
    <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>
    <fileset dir="${resourcesDir}" />
  </jar>
</target>

без хлопот. Это также сделает вашу структуру каталогов более чистой, упрощая поиск элементов сверху вниз.

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