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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top