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? Или что-то еще?
Спасибо за ответ.
Ответы
Ответ 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
Нет, нет. Задача копирования - это правильный способ скопировать ресурсы в папки сборки.