La compilación de hormigas no copia los recursos
Pregunta
Creé mi propio build.xml que tiene:
<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>
Funciona muy bien. Cuando llamo ant run, compila y ejecuta mi aplicación, pero mi aplicación tiene un paquete con iconos y no se mueve a una carpeta " build " así que mi aplicación termina con una excepción que no pudo localizar mis íconos. Cuando los muevo yo solo, entonces funciona.
Intenté usar
<copy todir="build/app/icons">
<fileset dir="src/app/icons"/>
</copy>
Funciona, pero me gustaría hacerlo sin el comando de copia. ¿Hay algún parámetro para javac? ¿O algo más?
Gracias por la respuesta.
Solución
Lo sentimos, deberás copiar los archivos que no sean Java manualmente. Los recursos no son técnicamente " fuente " ;. El javac de la línea de comandos no copiará los archivos de recursos de su directorio de origen al directorio de salida, ni tampoco la tarea javac de ant.
Otros consejos
No hay tal parámetro. Puede copiar todo tipo de archivos entre sus directorios con:
<copy todir="build">
<fileset dir="src"
includes="**/*.xml,**/*.properties,**/*.txt,**/*.ico" />
</copy>
Puede hacer esto utilizando el elemento fileset
de la tarea jar
en lugar de copiar los archivos manualmente. Por ejemplo:
<jar destfile="dist/app.jar" basedir="build">
<fileset dir="src" includes="app/icons/**" />
</jar>
Esto copiará todo en src / app / icons /
a la ruta app / icons
en tu archivo .jar.
No, no hay. La tarea de copia es la forma correcta de copiar recursos en las carpetas de compilación.