Accueil > Développer sur Mac OS X > Intégrer Ant à Xcode

Intégrer Ant à Xcode

Par Derek Haidle, le 01/06/2004

Traduit par Olivier, le 06/06/2003

La nuit était sombre et brumeuse, et vous veniez juste de terminer vos dernières lignes de code Java sur Mac OS X grâce à Xcode. Le téléphone se met à sonner. Votre patronne vous appelle depuis Mexico où elle passe ses vacances. Elle vous demande de créer un processus de compilation pour Mac et Windows. Vous raccrochez. Au dehors, le tonnerre gronde et les éclairs illuminent le ciel. Vous commencez à transpirer. Des gouttes de sueurs perlent sur votre front.

Vous vous réveillez pour voir votre chat vous lécher le visage, le néon clignotant avec, en musique de fond, “Thunder Rolls” de Garth Brooks. Ouf ! Votre patron n’est même pas en vacances. Vous devez vraiment arrêter de coder jusqu’à 3 heures du matin !

D’accord, le côté mélodramatique mis de côté, la compilation de code Java pour de multiples plateformes est un problème rencontré par de nombreux développeurs. La réponse naturelle est souvent Ant, un outil proposé par le Groupe Apache.

Pourquoi Utiliser Ant ?

Ant possède un certain nombre d’avantages :

  • Standard : Le fichier de compilation est écrit en XML, ce qui le rend facile à éditer.
  • Cross-Plateforme : Ant fonctionne de façon similaire sur Mac OS X, Windows ou Linux.
  • Facilement extensible : Possibilité d’écrire des tâches Ant personnalisées pour ajouter des fonctionnalités à Ant. Il existe déjà des tâches Ant qui peuvent être créées pour générer automatiquement une image disque (fichier .dmg) après compilation.
  • Support des Environnement de Développement : Un bon nombre d’IDE (Integrated Developement Environnement) propose une grande intégration avec Ant, tel Eclipse.
  • Open Source : Si vous voulez voir sous le capot pour savoir comme Ant construit les projets, aucun problème. Le code source est disponible.

Pour cette article, je vais considérer ce qui suit :

  • Vous développez sur Mac OS X.
  • Les outils de développement Apple sont installés, en particulier Xcode.
  • Vous avez une certaine connaissance de Java.

Installer Ant

L’installation de Ant est très simple. L’article précédent écrit par David Miller contient les instructions nécessaires à l’installation de Ant sur Mac OS X.

Comprendre le Fichier de Build

La façon la plus simple de démarrer Ant est d’utiliser la ligne de commande du Terminal. Ant cherche automatiquement un fichier nommé build.xml dans le répertoire racine de votre projet. Dans Xcode, créez un fichier build.xml. Le fichier build.xml d’un petit projet Xcode pourrait ressembler à ceci :

<?xml version="1.0"?>

<project name="HelloWorld" default="myApp" basedir=".">
	<description>HelloWorld build file.</description>
	<property name="src" location="."/>
	<property name="build" location="build"/>

	<target name="init">
		<mkdir dir="${build}"/>
	</target>

	<target name="myApp" depends="init" description="compile the source ">
		<javac srcdir="${src}" destdir="${build}"/>
	</target>

</project>

Analysons ce fichier étape par étape :

<project name="HelloWorld" default="myApp" basedir=".">

Nous commençons par le noeud <project>. Ce noeud doit être le premier déclaré dans le fichier build.xml. Un seul noeud <project> est autorisé par fichier build.xml. Le projet a un nom qui peut être n’importe quoi de descriptif. L’attribut default indique à Ant la première tâche à lancer si aucune tâche n’est spécifiée. Nous examinerons les tâches dans un instant.

<description>HelloWorld build file.</description>
    <property name="src" location="."/>
    <property name="build" location="build"/>

Le noeud <description> est le descriptif du projet. C’est un bon endroit pour y mettre la documentation du build.xml et du projet en général. Le tag <property> peut être utilisé plus tard dans ce fichier build. Dans ce cas, nous pouvons définir deux variables pour l’accès aux fichiers source et la destination des fichiers compilés.

Les propriétés sont facilement utilisables par l’utilisation d’une syntaxe très semblable à celle de Java Standard Tag Library (JSTL). La variable src est référencée comme ceci : ${src}. D’autres variables systèmes sont également disponible, telles que le nom du système d’exploitation (${os.name}) et le nom du projet (${ant.project.name}).

<target name="init">
	<mkdir dir="${build}"/>
</target>

La cible est un ensemble d’éléments à effectuer. Dans ce cas, l’élément init s’assure que le répertoire de compilation est disponible.

<target name="build" depends="init" description="compile the source ">
	<javac srcdir="${src}" destdir="${build}"/>
</target>

La cible suivante appelée build a une dépendance sur la cible init. Et donc, la cible init sera appelée après la cible build. L’attribut description est un bon endroit pour ajouter un peu de documentation. Ensuite, Ant appelle la tâche javac, de la même façon que l’a été la tâche mkdir. Les attributs se décrivent d’eux même. srcdir est le répertoire source du code. destdir est le répertoire destination pour les fichiers compilés.

L’exécution du fichier de compilation depuis la ligne de commande est simple. Ouvrez simplement un Terminal et allez dans le répertoire de votre projet. Si vous avez ajouté Ant à votre fichier de configuration de terminal, alors tout ce que vous avez à faire est de taper ant une fois que vous êtes sur le répertoire du projet. Ant cherche automatiquement le fichier build.xml et exécute la cible par défaut. Puisque la cible par défaut, qui s’appelle build, dépend de la cible init, la cible init est exécutée en premier. C’est aussi simple que cela !

Voici la sortie d’un simple fichier build.xml exécuté depuis la ligne de commande :

<?xml version="1.0"?>

<project name="HelloWorld" default="myApp" basedir=".">
	<description>HelloWorld build file.</description>
	<property name="src" location="."/>
	<property name="build" location="build"/>

	<target name="init">
		<mkdir dir="${build}"/>
	</target>

	<target name="myApp" depends="init" description="compile the source ">
		<javac srcdir="${src}" destdir="${build}"/>
	</target>

</project>

Si vous avez un fichier Ant plus important, vous souhaitez probablement exécuter une cible particulière. Dans l’exemple ci-dessus, vous pouvez juste exécuter la cible init en tapant ant init.

Préparation de Xcode

Ne serait-il pas pratique de pouvoir exécuter le fichier Ant build.xml depuis Xcode ?
Xcode peut être configuré pour utiliser Ant quand vous appuyez sur la combinaison de touches Command-B.
En voici les étapes :

  1. Créer un projet : Le projet peut être n’importe quoi, mais pour cet exemple nous allons créer un simple outil Java.
    • Sélectionnez New Project depuis le menu File.
    • Sélectionnez Java Tool.
    • Comme nom de projet nous utiliseront antExample et pour comme répertoire de projet nous utiliserons ~/dev/antExample.
      (Libre à vous d’utiliser vos propres conventions de nommage).
    • Patientez un instant le temps que toutes les classes soient indexées.
  2. Préparez le projet : Les fichiers de votre projet devraient correspondre à ce qui suit :

    • Supprimez la cible (target) antExample.
      Quand vous supprimez la cible antExample, l’exécutable antExample est automatiquement supprimé également.
      (Indice : Pressez simplement la touche de suppression pour supprimer la cible.
      L’option delete n’est pas dans le menu contextuel.)
    • Supprimez également l’exécutable java
    • .

  3. Nouvelle Cible : Nous avons besoin d’une nouvelle cible pour que Ant puisse effectuer la compilation.
    • Ajouter une nouvelle cible en cliquant droit sur Target, sélectionner Add->New Target.
    • Sélectionnez External Target sous l’en-tête Special Targets.
    • Tapez AntTarget ou un nom approprié.
  4. La zone Groups & Files devrait ressembler à cela :

  5. Préparez la nouvelle cible : Nous avons besoin de faire savoir à Xcode que nous voulons utiliser Ant pour construire le projet.
    • Cliquez sur dans la barre outil.
    • Cliquez sur AntTarget. Le panneau suivant devrait apparaître dans la zone en bas à droite :

      (Indice : Parfois Xcode agit bizarrement lors de la présentation du panneau cible.
      Vous devrez peut-être devoir sélectionner d’abord un fichier puis AntTarget.)

    • Initialisez le champ Build Tool avec le chemin de votre installation de Ant.
      Dans mon cas, c’est /usr/local/apache-ant-1.6.1/bin/ant, mais votre répertoire peut être différent.
    • En scrollant vers le bas, supprimez tous les Build Settings, sauf Product_Name
    • Votre panneau cible devrait ressembler à ceci :

  6. Ajoutez un fichier build.xml : Le fichier de compilation fait partie du projet Xcode et il est très facile de l’éditer depuis Xcode.
    • Cliquez droit sur la racine antExample, sélectionnez Add->New File, sélectionnez Empty file dans le projet.
      Cliquez Next et nommez le build.xml. Cliquez sur Finish.
    • Sélectionnez le fichier build.xml et copiez-y le contenu XML suivant :
      <?xml version="1.0"?>
      	<project name="antExample" default="myApp" basedir=".">
      	<description>Ant Example build file.</description>
      	<property name="src" location="/Users/[yourUsername]/dev/antExample"/>
      	<property name="build"  location="/build"/>
      	<target name="init">
      		<mkdir dir=""/>
      	</target>
      	<target name="myApp" depends="init" description="compile the source ">
      		<javac srcdir="" destdir=""/>
      	</target>
      </project>

      Vous devrez changer la propriété src en accord avec votre configuration.

  7. Si tout c’est bien passé, appuyez sur Command-b ou cliquez sur le marteau de compilation dans la barre outil.
    Il vous indiquera qu’il est en cours de compilation, et après quelques secondes, en fonction de la vitesse de votre processeur, il indiquera “Succeeded” dans le coin supérieur droit.
    Vous devriez avoir maintenant un fichier antExample.class dans le répertoire indiqué.

Tout devrait être prêt maintenant.
Malheureusement, quand vous compilez le fichier, la fenêtre de compilation n’a pas connaissance de Ant et ne réagit pas aux tags <echo> de votre fichier, ni ne vous indique combien de temps la compilation a nécessité — comme il le fait si vous effectuez l’exécution depuis la ligne de commande.

Appeler Xcode depuis Ant

Disons que vous souhaitez vous connecter à distance sur votre système par SSH pour effectuer une rapide recompilation d’un projet Xcode.
Vous pouvez utiliser Ant pour facilement configurer des compilations de projets Xcode depuis la ligne de commande.
Il est facile d’exécuter Xcode depuis la ligne de commande en utilisant xcodebuild qui peut être appelé à partir de Ant.
Voici le fichier de compilation pour un projet Xcode simple :

<?xml version="1.0"?>

<project name="myApp" default="xcodeBuild" basedir=".">
    <target name="xcodeBuild">
        <echo>Start dBuild.
        <exec executable="xCodeBuild">
            <arg value="-alltargets"/>
        </exec>
        <echo>End dBuild.
    </target>
</project>

Ceci est une démonstration de l’exécution d’une ligne de commande à partir de Ant. Ant est très flexible. La tâche echo indique simplement à Ant d’afficher du texte quand elle est exécutée. Ce qui peut être utilisé pour débugger un fichier de compilation Ant. La tâche exec a un seul argument passé en utilisant le tag <arg/> et peut avoir des arguments supplémentaires. Si aucun argument est passé, Xcode construit la cible par défaut.

Créer un Jar

Créer un fichier .jar avec Ant est très simple. Vous pouvez ajouter une cible comme celle qui suit :

<target name="jar" description="build jar file." depends="dBuild">
    <echo>Build jar file.</echo>
    <jar destfile="/installer.jar" basedir=""/>
    <echo>Jar File Build Complete.</echo>
</target>

Evidemment, jarDir est spécifiée comme une propriété :

<property name="jarDir" value="jar"/>

Conclusion

Comme vous avez pu le voir, Ant est un outil très flexible pour le développeur. Une fois que vous avez commencé à travailler avec, vous lui découvrirez de nombreuses applications. Par exemple, si vous construisez une application Java avec Xcode, vous pouvez automatiser la création des fichiers .dmg.
Un .dmg est une image disque et représente la forme de distribution préférée pour les applications sur Mac OS X, à moins que vous n’ayez des fichiers de configuration à ajouter qui pourraient nécessiter un installeur.

Si vous voyez une utilisation intelligente de cet outil, faites-le nous savoir dans la section TalkBacks à la fin de cet article.
Entre temps, amusez-vous bien.

Textes originaux en anglais sur O’Reilly : Integrating Ant with Xcode par Derek Haidle

opoppon Développer sur Mac OS X , , ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
S'abonner aux commentaires de cet article