Подтвердить что ты не робот

Добавление ресурсов без кода в файл jar с помощью Ant

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

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

<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?

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

4b9b3361

Ответ 1

У вас не должно быть атрибута 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>

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