Mercredi 1 novembre 2006 3 01 /11 /2006 15:59
Cela fait 3 semaines que je cherche du travail sur Londres .... et je profite de ces qqes semaines de "vacances" pour me faire une petite appli Java qui me permettra d'enregistrer dans une base de données les rapports d'espionnage du jeu ogame.
Il me reste pas mal de boulot avant d'avoir qqchose d'utilisable tous les jours et hier je me suis pris la tête avec netbeans et ant.
Mon appli possède un fichier "properties". Ce fichier est lu au démarrage de l'appli et il doit se trouver à la racine du classpath ... je veux donc configurer ant pour que lors de l'exécution depuis netbeans il copie mon fichier dans le répertoire qui lui sert de racine pour le classpath (le répertoire ou on trouve les .class quoi).
Je décide donc de surcharger la target "run-single" (c'est celle-ci qui est exécutée qd on fait MAJ+F6 ou "Run File") prédéfinie de ant pour effectuer la copie de mon fichier (c'est le meilleur endroit à priori). Je fais ça dans le fichier build.xml comme ceci :

    <target name="project-properties">
        <copy file="${src.dir}/log4j.properties" todir="${build.classes.dir}" >
        </copy>   
    </target>
   
    <target name="run-single" depends="init,compile-single,project-properties" >
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <java classname="${run.class}"/>
    </target>
Tout à l'air OK, mon fichier est copié ou je veux mais .... l'appli ne se lance pas alors que le BUILD est ok. La différence par rapport à la target "run-single" d'origine est que la task java n'a pas le même namespace ....
Finalement, je décide d'utiliser le même namespace que celui d'origine et modifie le build.xml comme ceci :
<project name=... 
xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">

....
    <target name="project-properties">
        <copy file="${src.dir}/log4j.properties" todir="${build.classes.dir}" >
        </copy>   
    </target>
   
    <target name="run-single" depends="init,compile-single,project-properties" >
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <j2seproject1:java classname="${run.class}"/>
    </target>

Et ca fonctionne .... donc si qq'un à l'explication je suis preneur. On dirait que netbeans a besoin de ce namespace particulier pour pouvoir exécuter correctement la classe ...

Voir les commentaires - Recommander
Retour à l'accueil
 
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus