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 :

Ajout de lib dans un jar généré


Sujet :

ANT Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 35
    Par défaut Ajout de lib dans un jar généré
    Bonjour,

    Comment ajouté au jar que je genere avec ant l'ensemble des jars contenu dans mon repertoire "lib" et comment declarer ces jars dans le classpath ?

    J'ai essayé un truc qui ne donne rien...(cf build.xml)

    Merci
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="InitialisationTDB" basedir="." default="compile">
     
    		<path id="class.path">
    			<fileset dir="lib">
    		  		<includes name="**/*.jar" />
    		    </fileset>
    		</path>
     
     
            <!-- on inclu les propriétés -->
            <property file="build.properties"/>
     
            <!-- target qui supprime les classes compilé et le JAR -->
            <target name="clean">
                    <delete dir="${build.dir}"/>
                    <delete dir="${dist.dir}/${ant.project.name}.jar"/>
            </target>
     
            <!-- target qui compile le code Java dans le répertoire build -->
    		<target name="compile">
     
    		<!-- création d'un répertoire pour la compilation -->
    		<mkdir dir="${build.dir}"/>
     
    		<!-- compilation des sources Java -->
    		<javac srcdir="${src.dir}" destdir="${build.dir}">
    			<classpath refid="class.path" />
            </javac>       	
    	</target>
     
     
            <!-- target qui crée le JAR -->
            <target name="create-jar" depends="clean,compile">
                    <!-- création d'un répertoire pour le JAR -->
    		<mkdir dir="${dist.dir}"/>
                    <!-- création du JAR -->
                    <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
    				<manifest>
                    	<!-- on indique la classe principale du JAR-->
    					<attribute name="Main-Class" value="${main-class}"/>
    			</manifest>
    		</jar>	
     
    	</target>
     
        <!-- exécution du JAR -->
        <target name="run">
        	<java jar="${dist.dir}/${ant.project.name}.jar" fork="true"/>		
    	</target> 
     
        <target name="build-and-run" depends="create-jar,run" />
     
    </project>

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    C'est pas comme ça qu'il faut procéder : il faut plutôt que tu spécifies à ANT d'utiliser un manifest qui spécifie le CP de ton jar, comme décrit dans la http://java.developpez.com/faq/java/...on#creationJar

  3. #3
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 35
    Par défaut
    Merci...

    J'ai fait comme tu m'a dit, j'ai donc bien dans le manifest le classpath avec le path de mon jar.

    Mais j'ai deux soucis:
    -j'ai un path relatif alors qu'il faudrait qu'il soit absolu(c:\monprojet\lib\monjar.jar au lieu de lib/monjar.jar "

    -le jar crée n'embarque pas le jar qui est dans lib

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="InitialisationTDB" basedir="." default="compile">
     
    		<path id="class.path">
    			<fileset dir="lib">
    		  		<include name="**/*.jar" />
    		    </fileset>
    		</path>
     
     
            <!-- on inclu les propriétés -->
            <property file="build.properties"/>
     
            <!-- target qui supprime les classes compilé et le JAR -->
            <target name="clean">
                    <delete dir="${build.dir}"/>
                    <delete dir="${dist.dir}/${ant.project.name}.jar"/>
            </target>
     
            <!-- target qui compile le code Java dans le répertoire build -->
    		<target name="compile">
     
    		<!-- création d'un répertoire pour la compilation -->
    		<mkdir dir="${build.dir}"/>
     
    		<!-- compilation des sources Java -->
    		<javac srcdir="${src.dir}" destdir="${build.dir}">
    			<classpath refid="class.path" />
            </javac>       	
    	</target>
     
     
            <!-- target qui crée le JAR -->
            <target name="create-jar" depends="clean,compile">
                    <!-- création d'un répertoire pour le JAR -->
     
    		<pathconvert property="mf.classpath" pathsep=" ">
    		    <path refid="class.path" />
    		</pathconvert>
     
     
    		<mkdir dir="${dist.dir}"/>
                    <!-- création du JAR -->
                    <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
    				<manifest>
                    	<!-- on indique la classe principale du JAR-->
    					<attribute name="Main-Class" value="${main-class}"/>
    					<attribute name="Class-Path" value="${mf.classpath}" />
     
    				</manifest>
    		</jar>	
     
    	</target>
     
        <!-- exécution du JAR -->
        <target name="run">
        	<java jar="${dist.dir}/${ant.project.name}.jar" fork="true"/>		
    	</target> 
     
        <target name="build-and-run" depends="create-jar,run" />
     
    </project>

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    j'ai un path relatif alors qu'il faudrait qu'il soit absolu(c:\monprojet\lib\monjar.jar au lieu de lib/monjar.jar "
    Quoi ? Veux tu reformuler STP ?

    le jar crée n'embarque pas le jar qui est dans lib
    Oui, c'est normal que le jar généré n'embarque pas les libs. C'est faisable mais ça nécessite des hacks, genre des classloaders spéciaux, et tu ne veux certainement pas de ça (voir FatJar par exemple).

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 10
    Par défaut
    bonjour à tous,
    Désolé pour le up du message mais mon probleme ressemble beaucoup a celui-ci.
    En effet je désire mettre une librairie que j'utilise dans le .jar de mon application pour avoir une appli qui tourne juste en tapant : java -jar app.jar
    Voila ce que je cherche a faire :
    |->app.jar
    | |->lib/
    | | |API_1.jar
    | | |API_2.jar
    | |->mon/package/perso
    | |->META-INF/

    J'arrive à créer cette arboressance mais impossible de le lancer car je n'arrvie pas a spécifier dans le manifest que le classpath est a l'intérieur du jar.

    Si quelqu'un a une idée? merci d'avance

Discussions similaires

  1. Ajouter une ressource dans un JAR
    Par FabaCoeur dans le forum Java ME
    Réponses: 2
    Dernier message: 21/02/2008, 13h34
  2. [ANT] Débutant : inclure des libs dans un JAR
    Par Tino13 dans le forum ANT
    Réponses: 4
    Dernier message: 29/01/2008, 13h31
  3. inclure des libs dans un jar
    Par Cram_N7 dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2007, 15h35
  4. ajout le lib dans @inc ?
    Par Billette dans le forum Modules
    Réponses: 6
    Dernier message: 19/03/2007, 10h16
  5. Réponses: 5
    Dernier message: 11/04/2006, 16h39

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