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 :

[Débutant(e)] Générer un jar


Sujet :

ANT Java

  1. #1
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut [Débutant(e)] Générer un jar
    Salut,

    Dans mes projets, je me galère souvent avec des .bat pour faire un .jar exactement comme je veux (qui intègre les .jar externes pour faire un seul jar de mon appli).

    Maintenant, je n'ai jamais vraiment utilisé ant, et encore moins ant dans Eclipse...

    Comment gérer par exemple le fait que Eclipse compile automatiquement et que Ant compile aussi?

    En gros, j'ai un projet P dans eclipse, avec un répertoire org (packages org.a, org.b...).
    J'utilise des librairies externes ayant des packages com.a, com.b et org.c.

    Comment faire en utilisant ant sous eclipse pour générer un fichier monappli.jar qui contient à la fois mon projet et les librairies externes (et qui est exécutable)?

    Je sais le faire avec des .bat, mais c'est un peu galère (d'autant plus que si je mets le répertoire com des librairies externes dans mon répertoire de compilation, eclipse le supprime automatiquement à chaque clean, car mon projet n'a pas de répertoire com)...

    Merci d'avance de votre aide...

  2. #2
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Sous Eclipse, le plugin fatjar fait exactement ce que tu souhaites si je ne me trompe pas.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Sous Ant, que ce soit dans Eclipse ou en dehors, tu utilises <jar>

    Ant ne compile pas si tu ne lui demandes pas, donc de ce côté pas de problème. Sinon avec la tâche <jar> tu peux spécifier toutes les options de jar, construire dynamiquement le manifeste, et sélectionner exactement les répertoires/fichiers que tu veux inclure dans ton jar (tache <fileset>).

    Jacques Desmazieres

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Jacques - 06
    Sous Ant, que ce soit dans Eclipse ou en dehors, tu utilises <jar>

    Ant ne compile pas si tu ne lui demandes pas, donc de ce côté pas de problème. Sinon avec la tâche <jar> tu peux spécifier toutes les options de jar, construire dynamiquement le manifeste, et sélectionner exactement les répertoires/fichiers que tu veux inclure dans ton jar (tache <fileset>).

    Jacques Desmazieres
    Aurais-tu un petit exemple par hasard de build.xml qui fait ça ?

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Babaôrom
    Sous Eclipse, le plugin fatjar fait exactement ce que tu souhaites si je ne me trompe pas.
    fatjar j'avais essayé, je crois qu'il manquait qqch, mais je ne sais plus quoi (inclure un répertoire autre que les librairies je crois, comme celui des images... ou alors c'était le manifest...)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par ®om
    Aurais-tu un petit exemple par hasard de build.xml qui fait ça ?
    Quelquechose qui ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <property name="workspace.dir" value="${basedir}/.."/>
    <property name="target.dir" value="c:/build"/>
    <jar destfile="${target.dir}/monjar.jar" basedir="${workspace.dir}/monProjet" compress="true">
    	<manifest>
    		<attribute name="Built-By" value="${user.name}"/>
    		<attribute name="Main-Class" value="com.MaClass"/>
    	</manifest>
    	<patternset>
    		<include name="mesclasse/**/*.class" />
    		<include name="classeexternes/**/*.class" />
    		<exclude name="test/**/*.class" />
    	</patternset>
    </jar>
    Jacques Desmazières

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Jacques - 06
    Quelquechose qui ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <property name="workspace.dir" value="${basedir}/.."/>
    <property name="target.dir" value="c:/build"/>
    <jar destfile="${target.dir}/monjar.jar" basedir="${workspace.dir}/monProjet" compress="true">
    	<manifest>
    		<attribute name="Built-By" value="${user.name}"/>
    		<attribute name="Main-Class" value="com.MaClass"/>
    	</manifest>
    	<patternset>
    		<include name="mesclasse/**/*.class" />
    		<include name="classeexternes/**/*.class" />
    		<exclude name="test/**/*.class" />
    	</patternset>
    </jar>
    Jacques Desmazières
    Merci beaucoup, je vais adapter ça à mes projets

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Voilà, ça marche presque, encore un petit problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <patternset>
        <include name="bin/**/*.class" />
        <include name="lib/**/*.class" />
    </patternset>
    Les fichiers sont bien présents dans le .jar, mais dans des répertoires bin et lib. Est-il possible de mettre tout le contenu de bin et tout le contenu de lib à la racine de l'archive directement dans le ant? (il n'y a pas de concurrence de nom de fichier entre les 2 répertoires)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par ®om
    Voilà, ça marche presque, encore un petit problème:
    Les fichiers sont bien présents dans le .jar, mais dans des répertoires bin et lib. Est-il possible de mettre tout le contenu de bin et tout le contenu de lib à la racine de l'archive directement dans le ant? (il n'y a pas de concurrence de nom de fichier entre les 2 répertoires)
    Dans ce cas essaye de remplacer le patternset par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <fileset dir="bin">
      <include name="**/*.java"/>
    </fileset>
    <fileset dir="lib">
      <include name="**/*.java"/>
    </fileset>

    Jacques Desmazières

  10. #10
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    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
        <property name="target.dir" value="${basedir}/jar" />
        <target name="jar">
            <jar destfile="${target.dir}/MyFreeTV3.jar" basedir="${basedir}" compress="true">
                <manifest>
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="Main-Class" value="org.myfreetv.view.MyFreeTV" />
                </manifest>
                <fileset dir="bin">
                  <include name="**/*.class"/>
                </fileset>
                <fileset dir="lib">
                  <include name="**/*.class"/>
                </fileset>
            </jar>
        </target>
    Erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BUILD FAILED
    E:\ECLIPSE\MyFreeTV3\build.xml:8: A zip file cannot include itself
    Quand on enlève le patternset, ça pause des problèmes apparemment

  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    une idée?

  12. #12
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Bon maintenant, j'ai un autre problème...

    Maintenant que j'ai mon ANT, eclipse ne compile plus dès que je sauve un fichier...
    Je ne veux pas utiliser ANT pour compiler (je veux faire comment avant, eclipse le fait tout seul)...

    Merci de votre aide

    EDIT: Même en supprimant le ANT d'ailleurs, il ne compile plus du tout eclipse...
    Même si je désactive build automatically, et que je fais build project, il fait rien...

    Je viens de refaire une install propre, pareil...

    Y'a juste le projet où j'avais ajouté le ant que ça compile pas... même si le ant est supprimé...

    EDIT2: J'ai supprimé le projet et j'en ai recréé un autre à partir des sources, et ça marche (pourquoi, je ne sais pas)...

  13. #13
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Bon ça a fonctionné, j'ai remis mon ant, et ça fonctionne plus la compilation

    Maintenant, j'ai viré mon build.xml, j'ai supprimé le projet et je l'ai remis, rien à faire, ce projet ne veut pas compiler... Eclipse ne fait rien...

    EDIT: J'ai tout enlevé, j'ai tout remis, ça marche...

    Par contre, savez-vous pourquoi mon "exec" provoque une org.eclipse.ant.internal.ui.antsupport.AntSecurityException ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <target name="exec">
        <java classpath="bin:lib" classname="org.myfreetv.view.MyFreeTV" />
    </target>
    http://www.developpez.net/forums/sho...d.php?t=194793

Discussions similaires

  1. [générer rapport]jar manquant?
    Par kifouillou dans le forum BIRT
    Réponses: 35
    Dernier message: 01/03/2007, 17h09
  2. Réponses: 3
    Dernier message: 03/11/2006, 17h35
  3. [Débutant(e)] dom4j et jar executable
    Par utiljava dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/11/2005, 12h42
  4. [Débutant], [Swing], transformé en .jar
    Par JavaBien69 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 14/09/2005, 16h01
  5. Générer un jar sous Eclipse
    Par bzhrobby dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/04/2005, 11h11

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