Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ant : create jar et classpath manifest

mais pourquoi est il si méchant ? :(

    11 février 2009 à 10:27:07

    Bon, ca fait quelques heures que je tourne sur un problème de création de jar avec ant.

    J'ai donc une appli java, utilisant des lib extérieures.
    Pour compiler et construire mon jar, j'utilise un sript ant.

    Mon soucis viens de la déclaration des lib extérieures dans mon manifest.mf.

    Voilà mon script ant (enfin, la partie intéressante) :

    <path id="classpath">
            <fileset dir="${lib.dir}" includes="*.jar"/> 	
    </path>
    
    ...
    
    <target name="compile" depends="prepare">
    	<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"/>
    </target>
    
    <target name="create-jar" depends="clean, compile">
        	<pathconvert property="manifest-path" pathsep=" ">
        	    <path refid="classpath"/>
        	    <flattenmapper/>
        	</pathconvert>
            <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">		
            	<manifest>
    			<attribute name="Class-Path" value="${manifest-path}"/>
    			<attribute name="Main-Class" value="${main-class}"/>        		
    		</manifest>
    		</jar>	
        	<copy todir="${dist.dir}/${lib.dir}">
        	    <fileset dir="${lib.dir}"/>
        	</copy>
    </target>
    


    Au départ je déclarai ma varbale $manifest-path manullement, c'est à dire : $manfest-path = "./lib/machin.jar ./lib/bidule.jar" et ca marchai parfatement.

    Seulement, avec l'ajout de plus en plus de librairies externe, j'ai voulu automatiser le système, en créant une variable qui listerai tous les .jar présent dans le répertoire lib/
    Après avoir cherché sur le net, j'ai trouvé une solution qui fonctionnerai très bien d'après pas mal de personne.

    La compilation marche parfaitement. Lorsque j'exécute la tâche run (voir ci dessous) de mon ant, l'appli se lance sous éclipse.

    Mais quand je lance le jar depuis l'extérieur, ben rien ne se passe.

    Quelqu'un à une solution ? :(

    Voici la run du ant

    <target name="run" depends="create-jar">
           <java fork="true" classname="${main-class}">
                <classpath>
                    <path refid="classpath"/>
                    <path location="${dist.dir}/${ant.project.name}.jar"/>
                </classpath>
           </java>
    </target>
    


    Et le log de la console :

    Buildfile: C:\...\build.xml
    clean:
       [delete] Deleting directory C:\...\build
       [delete] Deleting directory C:\...\dist
    prepare:
        [mkdir] Created dir: C:\...\build
        [mkdir] Created dir: C:\...\dist
    compile:
        [javac] Compiling 2 source files to C:\...\build
    create-jar:
          [jar] Building jar: C:\...\dist\ApplicationPdf.jar
         [copy] Copying 4 files to C:\...\dist\lib
    run:
    BUILD SUCCESSFUL
    Total time: 5 seconds


    Merci
    • Partager sur Facebook
    • Partager sur Twitter

    Ant : create jar et classpath manifest

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown