Apache Ant
152619
31755478
2008-07-21T11:43:22Z
Bub's wikibot
373944
Lien vers "JAR (format de fichier)"
{{voir homonymes|ant}}
{{ébauche|logiciel}}
{{Infobox Logiciel
| nom = Ant
| image = [[Image:Xml.gif|250px]] <!-- Si vous trouvez mieux comme description n'hesitez pas ! (Boly38) -->
| description = ''Compilateur'' de tâches
| développeur = [[Apache Software Foundation]]
| dernière version = 1.7.0
| date de dernière version = {{Date|19|décembre|2006}}
| environnement = [[Microsoft Windows|Windows]], [[Linux]]
| type = Outil de développement
| licence = [[licence Apache]]
| site web = [http://ant.apache.org/ http://ant.apache.org/]
}}
'''Ant''' est un projet [[open source]] de la [[Apache Software Foundation|fondation Apache]] écrit en [[Java (langage)|Java]] qui vise le développement d'un logiciel d'automatisation des opérations répétitives tout au long du cycle de [[développeur |développement logiciel]], à l'instar des logiciels [[Make]].
Le nom est un acronyme pour "Another Neat Tool" (un autre chouette outil).
Ant est principalement utilisé pour automatiser la construction de projets en langage [[Java (langage)|Java]], mais il peut être utilisé pour tout autre type d'automatisation dans n'importe quel [[langage de programmation |langage]].
Parmi les tâches les plus courantes, citons : la [[Compilateur|compilation]], la génération de pages [[Hypertext Markup Language|HTML]] de document ([[Javadoc]]), la génération de rapports, l'exécution d'outils annexes ([[checkstyle]], [[findbugs]] etc), l'archivage sous forme distribuable ([[JAR (format de fichier)|JAR]] etc.)
==Histoire==
Ant a été conçu par [[James Duncan Davidson]] lorsqu'il transférait vers l'[[open source]] un produit de [[Sun Microsystems|Sun]]. Ce produit, et le moteur [[JavaServer Pages|JSP]]/[[Servlet]] de Sun [[Apache Tomcat]], sont arrivés plus tard. L'outil [[propriétaire]] 'make' était utilisé pour le compiler sur le système d'exploitation [[Solaris (système d'exploitation)|Solaris]] de Sun, mais dans le monde de l'open source il n'est pas possible de contrôler quelle plateforme est utilisée pour compiler Tomcat. Ant a été créé pour être simplement un outil indépendant du système d'exploitation pour compiler Tomcat à partir des directives contenues dans un fichier XML "build file". De cet humble début, l'outil devint de plus en plus omniprésent - et peut-être plus réussi - que Tomcat, produit pour lequel il a été créé. Ant (version 1.1) est officiellement disponible comme produit à part entière depuis le 19 juillet 2000.
Il commence à devenir le projet de soutien de l'open source Java; les développeurs prévoient un fichier "build.xml" pour tous les projets.
Parce que Ant a permis d'intégrer plus facilement les tests [[JUnit]] au processus de compilation, il a rendu les developpeurs plus disposés à adopter [[Test Driven Development]], et [[Extreme Programming]].
{{boîte déroulante|align=left|titre=un exemple de build.xml|contenu=
Voici un exemple de build.xml:
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<project name="projetWar" basedir="." default="checkstyle">
<property name="base.dir" value="../" />
<property name="baseTool.dir" value="../../outils/" />
<property name="src.dir" value="${base.dir}src" />
<property name="build.dir" value="${base.dir}webapp/WEB-INF/classes" />
<property name="doc" location="${base.dir}doc" />
<property name="lib" location="${base.dir}lib" />
<property name="reports" value="${baseTool.dir}/rapports" />
<property name="classpath" value="${build.dir}" />
<taskdef resource="checkstyletask.properties" classpath="${baseTool.dir}checkstyle-4.0-beta6/checkstyle-all-4.0-beta6.jar" />
<target name="reports" depends="checkstyle, classcycle, findbugs, jdepend">
<echo>Génération des rapports terminé.</echo>
</target>
<target name="jdepend">
<delete dir="${reports}/jdepend/" />
<mkdir dir="${reports}/jdepend/" />
<java classname="jdepend.xmlui.JDepend" fork="yes">
<classpath>
<fileset dir="${baseTool.dir}/jdepend/" includes="**/*.jar" />
</classpath>
<arg value="-file" />
<arg value="${reports}/jdepend/jdepend-report.xml" />
<arg value="${build.dir}" />
</java>
<style basedir="${reports}/jdepend/" destdir="${reports}/jdepend/" includes="jdepend-report.xml" style="${baseTool.dir}/jdepend/jdepend.xsl" />
</target>
<taskdef classpath="${baseTool.dir}findbugs-0.9.1/lib/findbugs-ant.jar" name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<property name="findbugs.home" value="${baseTool.dir}findbugs-0.9.1/" />
<target name="findbugs">
<delete dir="${reports}/findbugs/" />
<mkdir dir="${reports}/findbugs/" />
<findbugs home="${findbugs.home}" output="html" outputFile="${reports}/findbugs/bcel-fb.html">
<classpath>
</classpath>
<sourcePath path="${src.dir}" />
<class location="${build.dir}" />
</findbugs>
</target>
<taskdef classpath="${baseTool.dir}/Classycle/classycle.jar" name="classycleReport" classname="classycle.ant.ReportTask" />
<target name="classcycle">
<delete dir="${reports}/classycle/" />
<mkdir dir="${reports}/classycle/" />
<classycleReport reportFile="${reports}/classycle/classycle.xml">
<fileset dir="${build.dir}">
<include name="**/*.class" />
</fileset>
</classycleReport>
<style in="${reports}/classycle/classycle.xml" out="${reports}/classycle/classycle.html" style="${baseTool.dir}/Classycle/reportXMLtoHTML.xsl" />
<copydir dest="${reports}/classycle/images" src="${baseTool.dir}/Classycle/images">
</copydir>
</target>
<target name="init">
<!-- création d'un répertoire pour la compilation -->
<mkdir dir="${build.dir}" />
</target>
<target name="checkstyle" description="Generates a report of code convention violations.">
<delete dir="${reports}/checkstyle/" />
<mkdir dir="${reports}/checkstyle/" />
<checkstyle config="${baseTool.dir}/checkstyle-4.0-beta6/sun_checks.xml" failureProperty="checkstyle.failure" failOnViolation="false">
<classpath>
<!-- use the value of the ${classpath} property in the classpath -->
<pathelement path="${classpath}" />
<!-- include all jar files -->
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
<fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib">
<include name="**/*.jar" />
</fileset>
</classpath>
<formatter type="xml" tofile="${reports}/checkstyle/checkstyle_report.xml" />
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
</checkstyle>
<style in="${reports}/checkstyle/checkstyle_report.xml" out="${reports}/checkstyle/index.html" style="${baseTool.dir}/checkstyle-4.0-beta6/contrib/checkstyle-noframes-sorted.xsl" />
</target>
<target name="compil" depends="cleanTomcat">
<echo>Compilation des sources java</echo>
<!-- compilation des sources Java -->
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath>
<!-- use the value of the ${classpath} property in the classpath -->
<pathelement path="${classpath}" />
<!-- include all jar files -->
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
<fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>
</target>
<target name="compilJUnit">
<echo>Compilation des sources Junit</echo>
<!-- compilation des sources Java -->
<javac srcdir="tests" destdir="tests">
<classpath path="c:/eclipse3.1-WTP/plugins/org.junit_3.8.1/">
<!-- use the value of the ${classpath} property in the classpath -->
<pathelement path="${classpath}" />
<!-- include all jar files -->
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
<fileset dir="\var\www\jakarta-tomcat-4.0.6-LE-jdk14\common\lib">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>
</target>
<target name="doc" depends="compil" description="Generation de la documentation">
<delete dir="${doc}/" />
<mkdir dir="${doc}/" />
<javadoc destdir="${doc}/" author="true" version="true" use="true" package="true">
<fileset dir="${src.dir}">
<include name="**/*.java" />
<exclude name="**/*Test*" />
</fileset>
<classpath>
<pathelement path="${java.class.path}" />
</classpath>
</javadoc>
</target>
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="all" depends="init ,compil, doc" description="Generation complete">
<echo message="Generation complete." />
</target>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/lib/pmd-3.3.jar" />
<target name="pmd">
<delete dir="${reports}/pmd/" />
<mkdir dir="${reports}/pmd/" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/lib/pmd-3.3.jar" />
<pmd rulesetfiles="rulesets/optimizations.xml">
<formatter type="xml" toFile="${reports}/pmd/report_pmd.xml"/>
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
</pmd>
<xslt in="${reports}/pmd/report_pmd.xml" style="${baseTool.dir}/pmd-bin-3.3/pmd-3.3/etc/xslt/pmd-report-per-class.xslt" out="${reports}/pmd/report_pmd.html" />
</target>
</project>
</pre>
}}
== alternative ==
* [[SCons]]. Compilation de sources JAVA, C, C++ grace à l'expressivité des scripts Python
==Voir aussi==
*[[Make]]
*[[Développeur]]
*[[Maven]]
==Liens externes==
* {{en}} [http://ant.apache.org/ Le projet ANT].
* {{fr}} [http://www.jmdoudoux.fr/java/dej/chap059.htm Le cours de JM Doudoux].
{{Portail logiciels libres}}
[[Catégorie:Java]]
[[Catégorie:Apache Software Foundation]]
[[Catégorie:Outil libre de développement logiciel]]
[[ca:Apache Ant]]
[[da:Ant]]
[[de:Ant]]
[[en:Apache Ant]]
[[es:Apache Ant]]
[[it:Apache Ant]]
[[ja:Apache Ant]]
[[lt:Ant]]
[[nl:Apache Ant]]
[[pl:Apache Ant]]
[[pt:Apache Ant]]
[[ru:Apache Ant]]
[[sv:Apache Ant]]
[[ta:அப்பாச்சி ஆன்ட்]]
[[zh:Apache Ant]]