36 votes

La compilation Ant ne copie pas les ressources

J'ai créé mon propre build.xml qui a :

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

Cela fonctionne très bien. Quand j'appelle ant run, il compile et exécute mon application, mais mon application a un paquet avec des icônes et il n'est pas déplacé vers un dossier "build", donc mon application se termine avec une exception disant qu'il ne pouvait pas localiser mes icônes. Lorsque je les déplace moi-même, cela fonctionne.

J'ai essayé d'utiliser

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

Cela fonctionne, mais j'aimerais le faire sans la commande de copie. Y a-t-il un paramètre à javac ? Ou quelque chose d'autre ?

Merci pour la réponse.

47voto

Chris Winters Points 641

Ce paramètre n'existe pas. Vous pouvez copier toutes sortes de fichiers entre vos répertoires avec :

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

23voto

Mike Miller Points 1530

Désolé, vous devrez copier les fichiers non-java manuellement. Les ressources ne sont techniquement pas des "sources". La ligne de commande javac ne copiera pas les fichiers de ressources de votre répertoire source vers le répertoire de sortie, ni la tâche javac de ant.

12voto

David Hopkins Points 103

Vous pouvez le faire en utilisant le fileset de l'élément jar au lieu de copier manuellement les fichiers. Par exemple :

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

Cela copiera tout ce qui se trouve dans src/app/icons/ à la app/icons dans votre fichier .jar.

4voto

jsight Points 16025

Non, il n'y en a pas. La tâche de copie est la manière correcte de copier des ressources dans vos dossiers de construction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X