IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ANT Java Discussion :

build does not exist or is not a directory


Sujet :

ANT Java

  1. #1
    Membre actif
    Inscrit en
    juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut build does not exist or is not a directory
    Bonjour

    Je suis en train de tester la création d'une application JEE à partir d'un bloc note et d'Apache Ant. J'ai pu créer une servlet mais lors de la compilation j'ai ce message d'erreur:

    compile:

    BUILD FAILED
    D:Tomcat\apache-tomcat-7.0.50\webapps\MonAppli\build.xml:4 destination directory "D:Tomcat\apache-tomcat-7.0.50\webapps\MonAppli\build" does not exist or is not a directory
    Je pensais que c'était à Apache Ant de créer le répertoire Build et d y insérer toutes les Class compilés. Ou bien s'agissant des servlets, je dois créer le répertoire buil moi-même?

    Je rappelle que dans l'invite de commande, je me suis pourtant bien placé dans le répertoire MonAppli et mon build.xml je trouve à la racine de mon projet.

    Voici le code de mon build.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" ?>
    <project name="MonAppli " default="compile">
            <target name="compile">
                    <javac srcdir="src" destdir="build" />
            </target>
    </project>

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    mars 2007
    Messages
    590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 590
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par momjunior Voir le message
    Je pensais que c'était à Apache Ant de créer le répertoire Build et d y insérer toutes les Class compilés. Ou bien s'agissant des servlets, je dois créer le répertoire buil moi-même?
    Bonjour,

    Non, c'est au développeur d'indiquer les répertoires à créer avant de les utiliser.
    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" ?>
    <project name="MonAppli " default="compile" basedir=".">  
     
      <property name="build.dir" value="${basedir}/build" />
     
      <target name="prepare">  
        <mkdir dir="${build.dir}" />
      </target>
     
      <target name="compile" depends="prepare" description="compile l application">
        <javac srcdir="src" destdir="build" />
      </target>
    </project>
    En général, dans "prepare" on regroupe les créations de répertoires avant les actions de build (compilation, tests, déploiement...).
    Le "depends" indique que quant on lance la target compile, prepare doit être lancé auparavant.

  3. #3
    Membre actif
    Inscrit en
    juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    C'est justement ça le problème, quand je compile une Class qui n'est pas une Servlet, la création du dossier build est automatique.

    Mais avec les servlet, je suis obligé d'insérer le code de création du répertoire build dans le build.xml comme tu me l'as indiqué.

    Donc j'aimerais savoir s'il y avait une exception avec les Servlets.

    MErci

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    mars 2007
    Messages
    590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 590
    Points : 1 672
    Points
    1 672
    Par défaut
    Le build avec ant nécessite que les répertoires dont il a besoin soient créés avant usage.
    Lorsque le répertoire build est créé automatiquement, ne serait-ce pas par un EDI type Eclipse ou Netbeans ?

  5. #5
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    mars 2007
    Messages
    590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 590
    Points : 1 672
    Points
    1 672
    Par défaut
    Exemple du site de Apache Ant ( https://ant.apache.org/manual/tutori...ldWithAnt.html ) : le répertoire est créé avant la compilation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <project>
        <target name="clean">
            <delete dir="build"/>
        </target>
    
        <target name="compile">
            <mkdir dir="build/classes"/>
            <javac srcdir="src" destdir="build/classes"/>
        </target>
    
        <target name="jar">
            <mkdir dir="build/jar"/>
            <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
                <manifest>
                    <attribute name="Main-Class" value="oata.HelloWorld"/>
                </manifest>
            </jar>
        </target>
    
        <target name="run">
            <java jar="build/jar/HelloWorld.jar" fork="true"/>
        </target>
     </project>

  6. #6
    Membre actif
    Inscrit en
    juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Oui je vois, d'ailleurs c'est ce que je fais maintenant lors de la compilation. Mais si tu regardes le tuto suivant:

    http://www.chicoree.fr/w/Construire_...n_Java_avec_An

    Tu verras que la création du répertoire build.xml est automatique, c'est-à-dire que la commande mkdir n'est pas nécessaire dans le build.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" ?>
    <project name="ProjetBanque" default="compile">
            <target name="compile">
                    <javac srcdir="src" destdir="build" />
            </target>
    </project>

  7. #7
    Membre actif
    Inscrit en
    juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par Cincinnatus Voir le message
    Le build avec ant nécessite que les répertoires dont il a besoin soient créés avant usage.
    Lorsque le répertoire build est créé automatiquement, ne serait-ce pas par un EDI type Eclipse ou Netbeans ?
    Non je n'utilise aucun IDE, juste le bloc-note.

    En fait, j'avais oublié que dans une application Java EE, les servlets compilés sont créés dans web/WEB-INF/classes, donc pas besoin de créer le répertoire build.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="UTF-8" ?>
    <project name="MyServlet" default="compile">
        <property name="project.name" value="mywebapp" />
        <property name="project.src.dir" value="src" />
        <property name="project.web.dir" value="WebContent" />
     
        <property name="JBOSS_HOME" value="../../jboss" />
        <path id="JBoss.libraryclasspath">
            <pathelement location="${JBOSS_HOME}/server/default/lib/servlet-api.jar"/>
        </path>
     
        <target name="init">
            <mkdir dir="${project.web.dir}" />
            <mkdir dir="${project.web.dir}/WEB-INF" />
            <mkdir dir="${project.web.dir}/WEB-INF/classes" />
        </target>
     
        <target name="clean">
            <delete dir="${project.web.dir}/WEB-INF/classes"/>
        </target>
     
        <target name="compile" depends="init">
            <javac srcdir="${project.src.dir}"
                   destdir="${project.web.dir}/WEB-INF/classes">
                <classpath refid="JBoss.libraryclasspath" />
            </javac>
        </target>
    </project>
    Mais ceci n'explique pas pourquoi Ant me crée le répertoire build automatiquement dans le 1er cas que je t'ai donné.

  8. #8
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    mars 2007
    Messages
    590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 590
    Points : 1 672
    Points
    1 672
    Par défaut
    Citation Envoyé par momjunior Voir le message
    Oui je vois, d'ailleurs c'est ce que je fais maintenant lors de la compilation. Mais si tu regardes le tuto suivant:

    http://www.chicoree.fr/w/Construire_...n_Java_avec_An

    Tu verras que la création du répertoire build.xml est automatique, c'est-à-dire que la commande mkdir n'est pas nécessaire dans le build.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" ?>
    <project name="ProjetBanque" default="compile">
            <target name="compile">
                    <javac srcdir="src" destdir="build" />
            </target>
    </project>
    Euh, non, la création du répertoire build n'est PAS automatique dans ce tuto : regarde mieux l'image au niveau du paragraphe "Organisation du projet" : Nom : Application_Banque_source_seulement.png
Affichages : 484
Taille : 7,8 Ko

    Le "build" est déjà créé avant toute compilation.
    Et , a priori, le tuto de Apache Ant est quand même la version officielle...

  9. #9
    Membre actif
    Inscrit en
    juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Ok possible mais je peux t'assurer que la création est automatique. Crée le répertoire ProjetBanque et compile le build.xml sans créer le répertoire build. Tu verras qu'il va te le créer automatiquement .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/06/2015, 17h39
  2. does not exist and was not trapped in __call()
    Par lordlifen dans le forum MVC
    Réponses: 4
    Dernier message: 25/05/2011, 10h55
  3. Build Ant --> Package javax.servlet does not exist
    Par gunthi dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/04/2007, 15h58
  4. FATAL 1: Database "x" does not exist in the syste
    Par barbituric dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 17/03/2004, 06h35
  5. [JCreator] "package tools does not exists"
    Par snyper147 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 04/05/2003, 20h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo