accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: Comportement bizarre du couple eclipse+ant

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.java ] 

Retour : Accueil du site fr comp lang java   charte stats de ce groupe


  Sujet:   Re: Comportement bizarre du couple eclipse+ant  
 De: seb666...@yahoo.fr
 Groupes: fr.comp.lang.java
 Organisation: http://groups.google.com
 Date: 28. Apr 2008, 02:53:44
 References: 1
jlp wrote:

> Quand tu affiches ton fichier build.xml dans eclipse et que tu cliques
> droit et puis Run As => Ant build
> qu'est ce qu'il se passe ?

Ce que j'expliquais dans mon message précédent, c'est à dire
la sortie suivante, sans  aucune indication d'erreur :
-------------------------------------------------------------
Buildfile: build.xml
build:
BUILD SUCCESSFUL
Total time: 2 seconds
--------------------------------------------------------------

Après avoir regardé d'un peu plus près, le problème vient en fait
du système de build d'eclipse et plus précisemment du compilateur
intégré au JDT qui est capable de produire des .class même lorsque
le source contient des erreurs, tel que cela est spécifié dans la
FAQ d'eclipse :

--------------------------------------------------------------------------
(http://wiki.eclipse.org/index.php?
title=FAQ_How_do_I_choose_my_own_compiler%3F&redirect=no)
FAQ How do I choose my own compiler?

[...] Finally, the _JDT_compiler_can_generate_class_files_even_when
the_source_contains_compilation_errors.
----------------------------------------------------------------------------

Donc en fait, lorsqu'un script ant est lancé via l'option
Run As->Ant Build, le compilateur génère un .class - même s'il y a
des erreurs dans le source - puis la main est donné au script ant.
Le .class étant "à jour", le source n'est pas compilé et le résultat
de l'execution du script ant est un joli "BUILD SUCCESSFUL".

Pour s'appercevoir de ce comportement, il suffit de procéder ainsi :

 + un source contenant une erreur :

  public class BuggedHelloWorld {
    public static void main(String[] pArgs) {
      System.out.printn("Hello World");
    }
  }

 + un script ant "build.xml" :
   <?xml version="1.0"?>
   <project name="BuggedHelloWorld" default="compile" basedir=".">
     <property name="src-dir" value="src"/>
     <property name="dest-dir" value="bin"/>
     <target name="compile">
       <input message="Frapper Entrée pour continuer ..."/>
       <javac srcdir="${src-dir}" destdir="${dest-dir}" listfiles="on"/
>
   </project>

 + lancer le script ant via Run As->Ant build puis lorsque la fenêtre
   d'attente "Frapper Entrée pour continuer ..." apparaît, aller -à
   l'aide d'un shell ou de l'explorateur- dans le répertoire de
   destination des .class ("bin") pour s'appercevoir qu'un
   BuggedHelloWorld.class a été généré avant même l'execution de la
   cible "javac" du script ant. Un BuggedHelloWorld.class ayant été
   généré, javac va considérer qu'il n'y  a rien à faire et le
résultat
   de ant sera BUILD SUCCESSFUL !

   Remarques importantes:
     1- Le fait de supprimer le .class puis de relancer Run as->Ant
build
        ne provoquera pas la génération du .class et le résultat d'ant
        sera BUILD FAILED avec le bon rapport d'erreur !

     2- Le fait de supprimer le .class puis de forcer la modification
de
        la date de dernière modification du source -en ajoutant un
espace
        au début du source par exemple- provoquera le même type
d'erreur,
        c'est à dire la génération d'un .class invalide, le court-
circuitage
        de javac et le retour de BUILD SUCCESSFUL par ant.

Contrairement à ce que j'ai dit dans mon premier message, le fait de
définir le script ant comme premier builder (Project->Properties-
>Builder->
Import->ant build file->Up) n'est pas suffisant.

En fait, la seule chose à faire pour éviter ce problème est de
spécifier dans
la cible javac du script ant un répertoire de destination différent
(build par
exemple) de celui spécifié dans l'option Project->Properties->"Default
Output
Folder" d'eclipse. Cependant, il faut garder à l'esprit que cette
méthode
n'évitera pas la création de .class invalide dans le "Default Output
Folder".


--
SeB


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)