Qu'est-ce que Ant?
Apache Ant est un outil de génération basé sur Java. Selon le fondateur d'origine James Duncan Davidson, le nom de cet outil est l'acronyme d'un autre outil soigné.
Ce que fait la fourmi:
Les outils de génération sont utilisés dans le développement de logiciels pour convertir le code source et d'autres fichiers d'entrée en fichiers exécutables (et éventuellement dans les formats d'image de produit installables). À mesure que le processus de génération d'applications devient plus complexe, il devient encore plus important de s'assurer que les mêmes étapes de génération sont utilisées pendant chaque génération, tout en atteignant autant d'automatisation que possible pour générer des versions de génération cohérentes en temps opportun.
Avantages de la fourmi:
Ant est un outil de construction basé sur Java. En théorie, il est quelque peu similaire de faire dans (Unix) C, mais n'a aucun défaut dans la marque. La dernière version est: Ant 1.8.4. Puisque nous avons déjà fabriqué, Gnumake, Nmake, Jam et d'autres outils de construction, pourquoi avons-nous besoin d'un nouvel outil de construction? Parce que l'auteur original d'Ant ne peut pas tolérer les limitations et les inconvénients de ces outils lors du développement de logiciels sur plusieurs plates-formes (matérielles). Les outils de marque sont essentiellement basés sur des shell: ils calculent les dépendances, puis exécutent les commandes (ces commandes ne sont pas très différentes des commandes que vous tapez sur la ligne de commande). Cela signifie que vous pouvez facilement étendre l'outil en utilisant des programmes de nouveaux programmes (Command) (Command); Cependant, cela signifie également que vous vous limitez à un système d'exploitation spécifique ou à des types de SG spécifiques, tels que Unix.
La fourmi est différente. Contrairement au mode d'extension basé sur les commandes shell, Ant utilise des classes Java pour s'étendre. (Utilisateur) Il n'est pas nécessaire d'écrire des commandes de shell. Le fichier de configuration est basé sur XML. Diverses tâches peuvent être exécutées en appelant l'arbre cible. Chaque tâche est exécutée par un objet qui implémente une interface de tâche spécifique.
Ant définit les dépendances entre les fichiers générés, qui utilise des classes Java multiplateforme. Avec ANT, vous pouvez écrire un seul fichier de générateur qui fonctionne de manière cohérente sur n'importe quelle plate-forme Java (car la fourmi elle-même est mise en œuvre dans la langue java), qui est le plus grand avantage de la fourmi
ANT génère une analyse de fichiers:
Ant ne définit pas sa propre syntaxe personnalisée; Au lieu de cela, ses fichiers générés sont écrits en XML. Il existe un ensemble d'éléments XML prédéfinis que la fourmi peut comprendre, et de nouveaux éléments peuvent également être définis pour étendre la fonctionnalité de la fourmi. Chaque fichier de construction se compose d'un seul élément de projet, qui à son tour contient un ou plusieurs éléments cibles. Une cible est une étape définie du processus de génération, qui effectue un certain nombre d'opérations, comme la compilation d'un ensemble de fichiers source. Et ces opérations elles-mêmes sont effectuées par d'autres balises de tâche dédiées, puis ces tâches seront regroupées en éléments cibles individuels au besoin. Toutes les opérations requises pour un processus de génération unique peuvent être placées dans un seul élément cible, mais cela réduit la flexibilité. Il est généralement préférable de diviser ces opérations en étapes de génération logique, chaque étape contenue dans son propre élément cible. Cela permet d'effectuer des parties individuelles du processus de génération globale sans nécessairement exécuter d'autres pièces.
Par exemple, en appelant uniquement certaines cibles, vous pouvez compiler le code source de votre projet sans avoir à créer un fichier de projet installable. L'élément de projet de niveau supérieur doit contenir un attribut par défaut, qui spécifie la cible à exécuter si Ant est appelé. Ensuite, vous devez utiliser l'élément cible pour définir la cible elle-même.
Voici un fichier généré de base:
<? xml version = "1.0"?> <project default = "init"> <cible name = "init"> </arget> </ project>
Utilisation de base de la fourmi:
1. Configurer les variables d'environnement:
Ant_home: c: /ant-1.8 -----> Chemin du répertoire d'installation / décompression de la fourmi
Ajouter au chemin: c: /ant-1.8/bin -----> Path du répertoire de bacs dans la fourmi
2. Confirmez si la configuration de la variable d'environnement ouvre avec succès la fenêtre CMD, puis entrez la commande: ant:
Voir l'écran suivant:
Étant donné que Ant doit avoir un fichier build.xml par défaut lors de la construction, il y a l'invite ci-dessus, ce qui signifie que l'environnement d'Ant a été configuré avec succès.
3. Créez un dossier appelé Helloworld en utilisant Ant:
Tout d'abord, vous devez modifier Build.xml:
<? xml version = "1.0"?> <project default = "init"> <cible name = "init"> <span style = "colori: # ff0000;"> <mkdir dir = "helloworld"> </span> </arget> </ project>
Ensuite, passez au répertoire où se trouve le fichier build.xml, entrez Ant, et s'il y a une invite comme suit, la création de dossiers sera réussie:
(La pièce init est équivalente à la sortie du journal)
4. Vous pouvez également utiliser Ant pour créer des répertoires de fichiers imbriqués à plusieurs niveaux qui ne doivent être modifiés que dans le fichier build.xml:
<? xml version = "1.0"?> <project default = "init"> <cible name = "init"> <span style = "colore: # ff0000;"> <mkdir dir = "helloworld / a / b / c" /> </span> </ibler> </ project>
5. Supprimer le répertoire à plusieurs niveaux comme ci-dessus:
<? xml version = "1.0"?> <project default = "init"> <cible name = "init"> <span style = "Color: # ff0000;"> <delete dir = "helloworld" /> </span> </sible> </propre>
Remarque: Ici, le chemin n'a besoin que de saisir le chemin du répertoire de plus haut niveau, qui est exactement la puissance de l'outil ANT:
Si vous souhaitez supprimer un répertoire en Java, vous pouvez le supprimer à moins que le répertoire ne soit vide, sinon vous devez le supprimer progressivement.
À l'aide de l'outil Ant, vous pouvez supprimer directement les dossiers contenant des sous-répertoires.
Regardons un autre exemple de fichier XML:
<? xml version = "1.0"?> <project default = "init" name = "project"> <description> un projet simple introduisant l'utilisation de balises description dans les fichiers de build Ant. </ Description> <! - Les commentaires XML peuvent également être utilisés -> <Target Name = "INIT" Description = "Initialize Argon Database"> <! - Effectuez des étapes d'initialisation ici -> </ Target> </ Project>
Comme on peut le voir, les commentaires XML peuvent être utilisés dans le fichier de construction pour plus de clarté. De plus, Ant définit ses propres attributs de description et de description, qui peuvent être utilisés pour fournir des annotations plus structurées.
Attribut Ant:
Les propriétés en ANT sont similaires aux variables dans les langages de programmation, et elles ont toutes des noms et des valeurs. Cependant, contrairement aux variables habituelles, une fois définies, les propriétés en ANT ne sont pas modifiées; Ils sont immuables, tout comme les objets de chaîne en langue java. Cela peut sembler restrictif au début, mais c'est pour suivre le principe simple d'Ant: après tout, c'est un outil de générateur, pas un langage de programmation. Si vous essayez d'attribuer une nouvelle valeur à une propriété existante, cela ne sera pas considéré comme une erreur, mais la propriété conservera toujours sa valeur existante
Définition et utilisation des propriétés:
<propriété name = "metal" value = "beryllium" />
Pour référencer cette propriété dans d'autres parties du fichier généré, utilisez la syntaxe suivante:
Copiez le code comme suit: $ {métal}
Par exemple, pour utiliser une telle valeur qui fait partie de la valeur d'une autre propriété, écrivez l'étiquette comme suit
<propriété name = "metal-database" value = "$ {metal} .db" />
Attribut d'emplacement:
Les attributs sont souvent utilisés pour référencer des fichiers ou des répertoires sur des systèmes de fichiers, mais pour les plates-formes qui utilisent différents séparateurs de chemin (par exemple, / et /), cela peut causer des problèmes lors de la couture des plates-formes différentes. L'attribut d'emplacement d'ANT est spécialement conçu pour inclure des chemins de système de fichiers d'une manière indépendante de la plate-forme. Utilisez l'emplacement au lieu de la valeur comme ceci:
<propriété name = "database-file" location = "archive / databases / $ {metal} .db" /> Les caractères séparés par le chemin utilisé pour l'attribut de localisation seront convertis au format correct de la plate-forme actuelle; Et comme le nom du fichier est relatif, il est considéré comme relatif au répertoire de base du projet. Nous pouvons également l'écrire facilement comme suit:
<propriété name = "database-file" location = "archive / databases / $ {metal} .db" />Les deux versions de cette balise auront le même comportement sur différentes plates-formes.
Définition des dépendances:
La génération d'un projet nécessite généralement de nombreuses étapes - par exemple, vous devez d'abord compiler le code source, puis l'emballer dans un fichier d'archives Java (JAR). Beaucoup de ces étapes ont une commande clairement définie - par exemple, vous ne pouvez pas emballer le fichier de classe tant que le compilateur le génère à partir du code source. Contrairement à la spécification séquentielle des cibles, Ant adopte une approche plus flexible pour définir les dépendances. Chaque objectif est défini en fonction de tous les autres objectifs qui doivent être atteints avant de pouvoir être exécutés. Ceci est réalisé en utilisant l'attribut Detend de l'élément cible
<Target name = "init" /> <cible name = "preprocess" Dentend = "init" /> <cible name = "compile" Dentend = "init, preprocess" /> <cible name = "package" Dentend = "compile" />
Cette méthode vous permet d'effectuer le processus de génération à tout stade du projet; Ant exécutera d'abord la phase préalable définie. Dans l'exemple ci-dessus, si Ant termine l'étape de compilation, il déterminera que les deux objectifs de l'initiation et du prétraitement doivent être exécutés en premier. L'objectif init ne dépend de aucune autre cible, il sera donc exécuté en premier. ANT vérifie ensuite le préprocessetRarget et constate qu'il dépend de l'objectif init; Depuis que ce dernier a été exécuté, Ant ne l'exécutera plus, il commence donc à exécuter la cible de prétraitement. Enfin, la tâche de compilation elle-même peut être exécutée.
Notez que l'ordre dans lequel les cibles apparaissent dans le fichier généré n'est pas important: l'ordre dans lequel l'exécution est déterminée de manière unique par l'attribut Detend.