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

Ant компиляция не копирует ресурсы

Я создал свой собственный build.xml, который имеет:

<target name="compile">
    <mkdir dir="build"/> 
    <javac destdir="build"> 
        <src path="src"/> 
    </javac>
</target>

<target name="build" depends="compile">
    <mkdir dir="dist"/>
    <jar destfile="dist/app.jar" basedir="build" />
</target>

<target name="run" depends="compile">
    <java classname="webserver.Loader" classpath="build" fork="true" />      
</target>

Он отлично работает. Когда я вызываю ant run, поэтому он компилирует и запускает мое приложение, но мое приложение имеет пакет с значками и не перемещается в папку "build", поэтому мое приложение заканчивается исключением, что он не может найти мои значки, Когда я двигаю их сам, он работает.

Я попытался использовать

<copy todir="build/app/icons">
    <fileset dir="src/app/icons"/>
</copy>

Это работает, но я хотел бы сделать это без команды копирования. Есть ли параметр javac? Или что-то еще?

Спасибо за ответ.

4b9b3361

Ответ 1

Извините, вам придется копировать файлы, отличные от java, вручную. Ресурсы технически не являются "источниками". Командная строка javac не будет копировать файлы ресурсов из исходного каталога в выходной каталог, и задача ant javac не будет выполняться.

Ответ 2

Нет такого параметра. Вы можете скопировать все файлы между вашими каталогами:

<copy todir="build">
    <fileset dir="src"
             includes="**/*.xml,**/*.properties,**/*.txt,**/*.ico" />
</copy>

Ответ 3

Это можно сделать с помощью элемента fileset задачи jar вместо ручного копирования файлов. Например:

<jar destfile="dist/app.jar" basedir="build">
    <fileset dir="src" includes="app/icons/**" />
</jar>

Это скопирует все в src/app/icons/ в путь app/icons в файле .jar.

Ответ 4

Нет, нет. Задача копирования - это правильный способ скопировать ресурсы в папки сборки.