| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
- <head>
- <meta charset="utf-8" />
- <meta name="generator" content="pandoc" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <title>ANT et outils de build</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- a.sourceLine { display: inline-block; line-height: 1.25; }
- a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
- a.sourceLine:empty { height: 1.2em; position: absolute; }
- .sourceCode { overflow: visible; }
- code.sourceCode { white-space: pre; position: relative; }
- div.sourceCode { margin: 1em 0; }
- pre.sourceCode { margin: 0; }
- @media screen {
- div.sourceCode { overflow: auto; }
- }
- @media print {
- code.sourceCode { white-space: pre-wrap; }
- a.sourceLine { text-indent: -1em; padding-left: 1em; }
- }
- pre.numberSource a.sourceLine
- { position: relative; }
- pre.numberSource a.sourceLine:empty
- { position: absolute; }
- pre.numberSource a.sourceLine::before
- { content: attr(data-line-number);
- position: absolute; left: -5em; text-align: right; vertical-align: baseline;
- border: none; pointer-events: all;
- -webkit-touch-callout: none; -webkit-user-select: none;
- -khtml-user-select: none; -moz-user-select: none;
- -ms-user-select: none; user-select: none;
- padding: 0 4px; width: 4em;
- color: #aaaaaa;
- }
- pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
- div.sourceCode
- { }
- @media screen {
- a.sourceLine::before { text-decoration: underline; }
- }
- code span.al { color: #ff0000; font-weight: bold; } /* Alert */
- code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
- code span.at { color: #7d9029; } /* Attribute */
- code span.bn { color: #40a070; } /* BaseN */
- code span.bu { } /* BuiltIn */
- code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
- code span.ch { color: #4070a0; } /* Char */
- code span.cn { color: #880000; } /* Constant */
- code span.co { color: #60a0b0; font-style: italic; } /* Comment */
- code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
- code span.do { color: #ba2121; font-style: italic; } /* Documentation */
- code span.dt { color: #902000; } /* DataType */
- code span.dv { color: #40a070; } /* DecVal */
- code span.er { color: #ff0000; font-weight: bold; } /* Error */
- code span.ex { } /* Extension */
- code span.fl { color: #40a070; } /* Float */
- code span.fu { color: #06287e; } /* Function */
- code span.im { } /* Import */
- code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
- code span.kw { color: #007020; font-weight: bold; } /* Keyword */
- code span.op { color: #666666; } /* Operator */
- code span.ot { color: #007020; } /* Other */
- code span.pp { color: #bc7a00; } /* Preprocessor */
- code span.sc { color: #4070a0; } /* SpecialChar */
- code span.ss { color: #bb6688; } /* SpecialString */
- code span.st { color: #4070a0; } /* String */
- code span.va { color: #19177c; } /* Variable */
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
- <link rel="stylesheet" href="pandoc.css">
- <!--[if lt IE 9]>
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
- <![endif]-->
- </head>
- <body>
- <div class="doctitle">ANT et outils de build</div>
- <nav id="TOC">
- <ul>
- <li><a href="#ant">ANT</a><ul>
- <li><a href="#introduction">Introduction</a></li>
- <li><a href="#installation-de-ant">Installation de ant</a><ul>
- <li><a href="#vérification-de-linstallation">Vérification de l’installation</a></li>
- </ul></li>
- <li><a href="#premiers-pas-avec-ant">Premiers pas avec Ant</a><ul>
- <li><a href="#propriétés">Propriétés</a></li>
- <li><a href="#fichier-de-propriétés">Fichier de propriétés</a></li>
- </ul></li>
- </ul></li>
- </ul>
- </nav>
- <h1 id="ant">ANT</h1>
- <h2 id="introduction">Introduction</h2>
- <p><strong>Ant</strong> est un outil de build qui permet de :</p>
- <ul>
- <li>Compiler du code</li>
- <li>Empaqueter des binaires</li>
- <li>Déployer des binaires sur des serveurs</li>
- <li>Tester les modifications</li>
- </ul>
- <p>C’est un outil assez ancien qui a été intégré comme projet Apache en l’an 2000.</p>
- <p>Il est basé sur des fichiers de configuration écrits en XML (fichier build.xml).</p>
- <h2 id="installation-de-ant">Installation de ant</h2>
- <p>L’installation se fait en suivant les instructions données sur la page du <a href="https://ant.apache.org/">projet Ant</a>. Il est disponible à l’installation notamment via le gestionnaires de paquets.</p>
- <h3 id="vérification-de-linstallation">Vérification de l’installation</h3>
- <p>Pour vérifier la version de Ant présente sur votre système, tapez la commande:</p>
- <div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" data-line-number="1">$ <span class="ex">ant</span> -version</a>
- <a class="sourceLine" id="cb1-2" data-line-number="2"><span class="ex">Apache</span> Ant(TM) <span class="ex">version</span> 1.10.2 compiled on February 3 2018</a></code></pre></div>
- <h2 id="premiers-pas-avec-ant">Premiers pas avec Ant</h2>
- <p>Créez un fichier <code>build.xml</code> qui va nous permettre de tester Ant:</p>
- <div class="sourceCode" id="cb2"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="kw"><?xml</span> version = "1.0"<span class="kw">?></span></a>
- <a class="sourceLine" id="cb2-2" data-line-number="2"><span class="kw"><project</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"Hello World with Ant"</span><span class="ot"> default</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb2-3" data-line-number="3"> <span class="kw"><target</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb2-4" data-line-number="4"> <span class="kw"><echo></span>Hello World - Ant<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb2-5" data-line-number="5"> <span class="kw"></target></span></a>
- <a class="sourceLine" id="cb2-6" data-line-number="6"><span class="kw"></project></span></a></code></pre></div>
- <p>Lancez maintenant la commande <code>ant</code>:</p>
- <div class="sourceCode" id="cb3"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb3-1" data-line-number="1">$ <span class="ex">ant</span></a>
- <a class="sourceLine" id="cb3-2" data-line-number="2"><span class="ex">Buildfile</span>: /path/to/ant/project/build.xml</a>
- <a class="sourceLine" id="cb3-3" data-line-number="3"></a>
- <a class="sourceLine" id="cb3-4" data-line-number="4"><span class="ex">info</span>:</a>
- <a class="sourceLine" id="cb3-5" data-line-number="5"> [<span class="ex">echo</span>] Hello World - Ant</a>
- <a class="sourceLine" id="cb3-6" data-line-number="6"></a>
- <a class="sourceLine" id="cb3-7" data-line-number="7"><span class="ex">BUILD</span> SUCCESSFUL</a>
- <a class="sourceLine" id="cb3-8" data-line-number="8"><span class="ex">Total</span> time: 0 seconds</a></code></pre></div>
- <h3 id="propriétés">Propriétés</h3>
- <h4 id="définition-dune-propriété">Définition d’une propriété</h4>
- <p>Nous allons maintenant définir une propriété (<code>property</code>).</p>
- <p>Modifiez maintenant le fichier <code>build.xml</code> comme suit:</p>
- <div class="sourceCode" id="cb4"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb4-1" data-line-number="1"><span class="kw"><?xml</span> version = "1.0"<span class="kw">?></span></a>
- <a class="sourceLine" id="cb4-2" data-line-number="2"><span class="kw"><project</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"Hello World with Ant"</span><span class="ot"> default</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb4-3" data-line-number="3"> <span class="kw"><property</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"site.name"</span><span class="ot"> value</span> <span class="ot">=</span> <span class="st">"www.example.com"</span><span class="kw">/></span></a>
- <a class="sourceLine" id="cb4-4" data-line-number="4"> <span class="kw"><target</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb4-5" data-line-number="5"> <span class="kw"><echo></span>Hello World - Ant site is ${site.name}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb4-6" data-line-number="6"> <span class="kw"></target></span></a>
- <a class="sourceLine" id="cb4-7" data-line-number="7"><span class="kw"></project></span></a></code></pre></div>
- <p>L’appel de la commande <code>ant</code> donne:</p>
- <pre><code>...
- info:
- [echo] Hello World - Ant site is www.example.com
- ...</code></pre>
- <p>Nous venons de définir une propriété nommée <code>site.name</code>.</p>
- <h4 id="propriétés-pré-définies">Propriétés pré-définies</h4>
- <p>Ajoutez les deux lignes <code>echo</code> dans la cible <code>info</code> comme suit :</p>
- <div class="sourceCode" id="cb6"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw"><target</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb6-2" data-line-number="2"> <span class="kw"><echo></span>Hello World - Ant site is ${site.name}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb6-3" data-line-number="3"> <span class="kw"><echo></span>Ant version is ${ant.version}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb6-4" data-line-number="4"> <span class="kw"><echo></span>Base dir is ${basedir}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb6-5" data-line-number="5"><span class="kw"></target></span></a></code></pre></div>
- <p>On obtient au lancement de <code>ant</code>:</p>
- <pre><code>info:
- [echo] Hello World - Ant site is www.example.com /tmp/path/to/ant/project
- [echo] Ant version is Apache Ant(TM) version 1.10.2 compiled on February 3 2018
- [echo] Base dir is /tmp/path/to/ant/project</code></pre>
- <p>Nous venons d’utiliser des propriétés pré-définies. En voici une liste :</p>
- <table>
- <colgroup>
- <col style="width: 29%" />
- <col style="width: 70%" />
- </colgroup>
- <thead>
- <tr class="header">
- <th>Nom</th>
- <th>Définition</th>
- </tr>
- </thead>
- <tbody>
- <tr class="odd">
- <td>ant.file</td>
- <td> Le chemin complet vers le fichier de build</td>
- </tr>
- <tr class="even">
- <td>ant.version</td>
- <td>La version de Ant</td>
- </tr>
- <tr class="odd">
- <td>basedir</td>
- <td>Répertoire de base du <em>build</em>. Peut être spécifié avec l’attribut <code>basedir</code> de l’élément <code>project</code></td>
- </tr>
- <tr class="even">
- <td>ant.java.version</td>
- <td>Version de Java utilisée</td>
- </tr>
- <tr class="odd">
- <td>ant.project.name</td>
- <td>Le nom du projet (attribute <code>name</code> de l’élément projet)</td>
- </tr>
- <tr class="even">
- <td>ant.project.default-target</td>
- <td>Cible par défaut du projet actuel</td>
- </tr>
- <tr class="odd">
- <td>ant.project.invoked-targets</td>
- <td>Cible invoquées (liste séparée par des virgules) du projet</td>
- </tr>
- <tr class="even">
- <td>ant.core.lib</td>
- <td>Chemin vers la librairie Ant (fichier JAR)</td>
- </tr>
- <tr class="odd">
- <td>ant.home</td>
- <td>Répertoire d’installation de Ant (<code>ANT_HOME</code>)</td>
- </tr>
- <tr class="even">
- <td>ant.library.dir </td>
- <td>Répertoire des librairies Ant. En général: <code>ANT_HOME/lib</code></td>
- </tr>
- <tr class="odd">
- <td>file.separator </td>
- <td>le séparateur des noms de répertoire</td>
- </tr>
- </tbody>
- </table>
- <p>Vous pouvez tester ces propriétés avec le fichier suivant:</p>
- <div class="sourceCode" id="cb8"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="kw"><?xml</span> version = "1.0"<span class="kw">?></span></a>
- <a class="sourceLine" id="cb8-2" data-line-number="2"><span class="kw"><project</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"Hello World with Ant"</span><span class="ot"> default</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb8-3" data-line-number="3"> <span class="kw"><property</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"site.name"</span><span class="ot"> value</span> <span class="ot">=</span> <span class="st">"www.example.com"</span><span class="kw">/></span></a>
- <a class="sourceLine" id="cb8-4" data-line-number="4"> <span class="kw"><target</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb8-5" data-line-number="5"> <span class="kw"><echo></span>Hello World - Ant site is ${site.name} ${basedir}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-6" data-line-number="6"> <span class="kw"><echo></span>Ant version is ${ant.version}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-7" data-line-number="7"> <span class="kw"><echo></span>Base dir is ${basedir}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-8" data-line-number="8"> <span class="kw"><echo></span>Java version is ${ant.java.version}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-9" data-line-number="9"> <span class="kw"><echo></span>ant.project.name is ${ant.project.name}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-10" data-line-number="10"> <span class="kw"><echo></span>ant.project.default-target : ${ant.project.default-target}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-11" data-line-number="11"> <span class="kw"><echo></span>ant.project.invoked-targets : ${ant.project.invoked-targets}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-12" data-line-number="12"> <span class="kw"><echo></span>ant.core.lib : ${ant.core.lib}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-13" data-line-number="13"> <span class="kw"><echo></span>ant.home : ${ant.home}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-14" data-line-number="14"> <span class="kw"><echo></span>ant.library.dir : ${ant.library.dir}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-15" data-line-number="15"> <span class="kw"><echo></span>file.separator : ${file.separator}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb8-16" data-line-number="16"> <span class="kw"></target></span></a>
- <a class="sourceLine" id="cb8-17" data-line-number="17"><span class="kw"></project></span></a></code></pre></div>
- <h3 id="fichier-de-propriétés">Fichier de propriétés</h3>
- <p>Il est possible de définir les propriétés d’un projet (son nom, sa version, etc) directement dans le fichier <code>build.xml</code>.</p>
- <p>Cependant, une pratique courante consiste à placer un fichier nommé <code>build.properties</code> à côté du fichier <code>build.xml</code></p>
- <p>Créez le fichier <code>build.properties</code> et y placer les éléments suivants:</p>
- <pre class="properties"><code>site.name = www.example.com
- build.version = 1.2.3</code></pre>
- <p>Modifiez le fichier <code>build.xml</code> comme suit:</p>
- <div class="sourceCode" id="cb10"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb10-1" data-line-number="1"><span class="kw"><?xml</span> version = "1.0"<span class="kw">?></span></a>
- <a class="sourceLine" id="cb10-2" data-line-number="2"><span class="kw"><project</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"Hello World with Ant"</span><span class="ot"> default</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb10-3" data-line-number="3"> <span class="kw"><property</span><span class="ot"> file</span> <span class="ot">=</span> <span class="st">"build.properties"</span><span class="kw">/></span></a>
- <a class="sourceLine" id="cb10-4" data-line-number="4"> <span class="kw"><target</span><span class="ot"> name</span> <span class="ot">=</span> <span class="st">"info"</span><span class="kw">></span></a>
- <a class="sourceLine" id="cb10-5" data-line-number="5"> <span class="kw"><echo></span>Hello World - Ant site is ${site.name}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb10-6" data-line-number="6"> <span class="kw"><echo></span>Project version is ${build.version}<span class="kw"></echo></span></a>
- <a class="sourceLine" id="cb10-7" data-line-number="7"> <span class="kw"></target></span></a>
- <a class="sourceLine" id="cb10-8" data-line-number="8"><span class="kw"></project></span></a></code></pre></div>
- <p>L’exécution de Ant donne alors:</p>
- <div class="sourceCode" id="cb11"><pre class="sourceCode xml"><code class="sourceCode xml"><a class="sourceLine" id="cb11-1" data-line-number="1">iinfo:</a>
- <a class="sourceLine" id="cb11-2" data-line-number="2"> [echo] Hello World - Ant site is www.example.com</a>
- <a class="sourceLine" id="cb11-3" data-line-number="3"> [echo] Project version is 1.2.3</a>
- <a class="sourceLine" id="cb11-4" data-line-number="4"></a>
- <a class="sourceLine" id="cb11-5" data-line-number="5">BUILD SUCCESSFUL</a>
- <a class="sourceLine" id="cb11-6" data-line-number="6">Total time: 0 seconds</a></code></pre></div>
- </body>
- </html>
|