Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Extensions  





3 Example  





4 Portability  





5 Limitations  





6 See also  





7 References  





8 Further reading  





9 External links  














Apache Ant






العربية
Català
Čeština
Dansk
Deutsch
Español
Français

Italiano
עברית
Lietuvių
Magyar

Bahasa Melayu
Nederlands

Norsk bokmål
Polski
Português
Русский
Svenska
ி
Türkçe
Українська
Tiếng Vit

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikimedia Commons
Wikibooks
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Apache Ant
Original author(s)James Duncan Davidson
Developer(s)Apache Software Foundation
Initial release19 July 2000; 23 years ago (2000-07-19)
Stable release

1.10.14 / August 20, 2023; 10 months ago (2023-08-20)[1]

RepositoryAnt Repository
Written inJava
PlatformJava SE
TypeBuild tool
LicenseApache License 2.0
Websiteant.apache.org Edit this on Wikidata

Apache Ant is a software tool for automating software build processes for Java applications[2] which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix.[3] It is similar to Make, but is implemented using the Java language and requires the Java platform. Unlike Make, which uses the Makefile format, Ant uses XML to describe the code build process and its dependencies.[4]

Released under an Apache License by the Apache Software Foundation, Ant is an open-source project.

History[edit]

Ant ("Another Neat Tool")[5] was conceived by James Duncan Davidson while preparing Sun Microsystems's reference JSP and Servlet engine, later Apache Tomcat, for release as open-source. A proprietary version of Make was used to build it on the Solaris platform, but in the open-source world, there was no way of controlling which platform was used to build Tomcat; so Ant was created as a simple platform-independent tool to build Tomcat from directives in an XML "build file". Ant (version 1.1) was officially released as a stand-alone product on July 19, 2000.

Several proposals for an Ant version 2 have been made, such as AntEater by James Duncan Davidson, Myrmidon by Peter Donald [6] and Mutant by Conor MacNeill, none of which were able to find large acceptance with the developer community.[7]

At one time (2002), Ant was the build tool used by most Java development projects.[8] For example, most open source Java developers included build.xml files with their distribution.[citation needed] Because Ant made it trivial to integrate JUnit tests with the build process, Ant allowed developers to adopt test-driven development and extreme programming.

In 2004 Apache created a new tool with a similar purpose called Maven.

Gradle, which is similar software, was created in 2008, which in contrary uses Groovy (and a few other languages) code instead of XML.

Extensions[edit]

WOProject-Ant[9] is just one of many examples of a task extension written for Ant. These extensions are installed by copying their .jar files into ant's lib directory. Once this is done, these task extensions can be invoked directly in the typical build.xml file. The WOProject extensions allow WebObjects developers to use ant in building their frameworks and apps, instead of using Apple's Xcode suite.

Antcontrib[10] provides a collection of tasks such as conditional statements and operations on properties as well as other useful tasks.[11][12]

Ant-contrib.unkrig.de[13] implements tasks and types for networking, Swing user interfaces, JSON processing and other.

Other task extensions exist for Perforce, .NET Framework, EJB, and filesystem manipulations.[14]

Example[edit]

A sample build.xml file is listed below for a simple Java "Hello, world" application. It defines four targets - clean,[15] clobber, compile and jar , each of which has an associated description. The jar target lists the compile target as a dependency. This tells Ant that before it can start the jar target it must first complete the compile target.

<?xml version="1.0"?>
<project name="Hello" default="compile">
    <target name="clean" description="remove intermediate files">
        <delete dir="classes"/>
    </target>
    <target name="clobber" depends="clean" description="remove all artifact files">
        <delete file="hello.jar"/>
    </target>
    <target name="compile" description="compile the Java source code to class files">
        <mkdir dir="classes"/>
        <javac srcdir="." destdir="classes"/>
    </target>
    <target name="jar" depends="compile" description="create a Jar file for the application">
        <jar destfile="hello.jar">
            <fileset dir="classes" includes="**/*.class"/>
            <manifest>
                <attribute name="Main-Class" value="HelloProgram"/>
            </manifest>
        </jar>
    </target>
</project>

Within each target are the actions that Ant must take to build that target; these are performed using built-in tasks. For example, to build the compile target Ant must first create a directory called classes (which Ant will do only if it does not already exist) and then invoke the Java compiler. Therefore, the tasks used are mkdir and javac. These perform a similar task to the command-line utilities of the same name.

Another task used in this example is named jar:

<jar destfile="hello.jar">

This Ant task has the same name as the common Java command-line utility, JAR, but is really a call to the Ant program's built-in JAR/ZIP file support. This detail is not relevant to most end users, who just get the JAR they wanted, with the files they asked for.

Many Ant tasks delegate their work to external programs, either native or Java. They use Ant's own <exec> and <java> tasks to set up the command lines, and handle all the details of mapping from information in the build file to the program's arguments and interpreting the return value. Users can see which tasks do this (e.g. <csv>, <signjar>, <chmod>, <rpm>), by trying to execute the task on a system without the underlying program on the path, or without a full Java Development Kit (JDK) installed.

Portability[edit]

Ant is intended to work with all systems for which Java runtimes are available. It is most commonly used with Windows, Linux, macOS and other Unix operating systems but has also been used on other platforms such as OS/2, OpenVMS, Solaris, HP-UX.[16]

Ant was designed to be more portable than Make.[4] Compared to Make, Ant uses less platform-specific shell commands. Ant provides built-in functionality that is designed to behave the same on all platforms. For example, in the sample build.xml file above, the clean target deletes the classes directory and everything in it. In a Makefile this would typically be done with the command:

rm -rf classes/

rm is a Unix-specific command unavailable in some other environments. Microsoft Windows, for example, would use:

rmdir /S /Q classes

In an Ant build file the same goal would be accomplished using a built-in command:

 <delete dir="classes"/>

Additionally, Ant does not differentiate between forward slash or backslash for directories and semicolon or colon for path separators. It converts each to the symbol appropriate to the platform on which it executes.

Limitations[edit]

There exist third-party Ant extensions (called antlibs) that provide much of the missing functionality. Also, the Eclipse integrated development environment (IDE) can build and execute Ant scripts, while the NetBeans IDE uses Ant for its internal build system. As both these IDEs are very popular development platforms, they can simplify Ant use significantly. (As a bonus, Ant scripts generated by NetBeans can be used outside that IDE as standalone scripts.)

See also[edit]

References[edit]

  1. ^ "Apache Ant Project News". Retrieved 30 August 2023.
  • ^ "Apache Ant - Welcome". ant.apache.org. Retrieved 2022-01-25.
  • ^ "Apache Ant - Frequently Asked Questions". ant.apache.org. Retrieved 2022-01-25.
  • ^ a b Moodie 2005, pp. 5–9, Chapter §1 Introducing Ant.
  • ^ "Why do you call it Ant? – Apache Ant FAQ".
  • ^ Peter Donald. "Myrmidon: The Ant2.0 Proposal".
  • ^ MacNeill, Conor (4 August 2005). "The Early History of Ant Development".
  • ^ Wiley (2002). Java Tools for eXtreme Programming. p. 76.
  • ^ "WOProject-Ant – WOProject / WOLips – Confluence". Archived from the original on 2009-01-08.
  • ^ "Ant-Contrib".
  • ^ "Ant-Contrib Tasks".
  • ^ Moodie 2005, pp. 266–267, Chapter §10 Writing Custom Tasks - Using Third-Party Custom Tasks.
  • ^ "ant-contrib.unkrig.de".
  • ^ "Overview of Ant Tasks".
  • ^ Moodie 2005, pp. 121–125, Chapter §5 Building a Project - Assembling the project - Manipulating the File Location.
  • ^ Apache Ant Manual. Section "System Requirements".
  • Further reading[edit]

  • Holzner, Steven (April 13, 2005). Ant – The Definitive Guide (2nd ed.). O'Reilly Media. p. 334. ISBN 978-0-596-00609-9.
  • Moodie, Matthew (2005). Pro Apache Ant (1st ed.). Apress. ISBN 1-59059-559-9.
  • Bell, Alexis T. (July 7, 2005). ANT Java Notes: An Accelerated Intro Guide to the Java ANT Build Tool (1st ed.). Virtualbookworm.com Publishing. p. 268. ISBN 978-1-58939-738-5.
  • Hatcher, Erik; Loughran, Steve (August 2002). Java Development with Ant (1st ed.). Manning Publications. pp. 672. ISBN 978-1-930110-58-8.
  • Niemeyer, Glenn; Poteet, Jeremy (May 29, 2003). Extreme Programming with Ant: Building and Deploying Java Applications with JSP, EJB, XSLT, XDoclet, and JUnit (1st ed.). SAMS Publishing. p. 456. ISBN 978-0-672-32562-5.
  • Williamson, Alan (November 1, 2002). Ant – Developer's Handbook (1st ed.). SAMS Publishing. p. 456. ISBN 978-0-672-32426-0.
  • Matzke, Bernd (September 2003). ANT: The Java Build Tool In Practice (1st ed.). Charles River Media. pp. 280. ISBN 978-1-58450-248-7.
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Apache_Ant&oldid=1224966598"

    Categories: 
    Apache Software Foundation projects
    Build automation
    Compiling tools
    Cross-platform free software
    Free software programmed in Java (programming language)
    Java (programming language) libraries
    Java development tools
    Software using the Apache license
    XML software
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    Articles needing additional references from July 2020
    All articles needing additional references
    All articles with unsourced statements
    Articles with unsourced statements from March 2010
    Articles that may contain original research from September 2011
    All articles that may contain original research
    Articles with VIAF identifiers
    Articles with CANTICN identifiers
    Articles with GND identifiers
    Articles with J9U identifiers
    Articles with LCCN identifiers
     



    This page was last edited on 21 May 2024, at 15:32 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki