Navigation
  • Home
  • Recent
  • Most Active
  • Popular
  • Blog
  • Credits
  • RSS
  •   Interaction
  • Register
  • Statistics
  •   Help
  • Suggestions
  • Contact Us
  • How to Edit
  • Help



  • [Edit]





    Apache Ant is a software tool for automating software build processes. It is similar to make but is written in the Java language and is primarily intended for use with Java.

    The most immediately noticeable difference between Ant and make is that Ant uses XML to describe the build process and its dependencies,
    whereas make has its Makefile format.
    By default the XML file is named build.xml.

    Ant is an Apache project. It is open source software, and is released under the Apache Software License.


        Apache Ant
            History
            Sample
            Extensions
            Portability
            Limitations
            See also
    NameApache Ant
    LogoImage:Ant logo large.gif
    DeveloperApache Software Foundation
    Latest Release Version1.6.5
    Latest Release DateJune 02, 2006
    Operating SystemCross-platform
    GenreBuild Tool
    LicenseApache License
    Websitehttp://ant.apache.org/ http://ant.apache.org

    top

    History
    Ant was conceived by James Duncan Davidson while turning a product from Sun into open source. The product later became Apache Tomcat; it was Sun's reference JSP/Servlet engine. The closed source 'make' tool could be used to build it on the Solaris Operating Environment, but in the open source world there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple tool to take an XML "build file" and use it to build Tomcat, regardless of which platform the developer was using. From this humble beginning, the tool has gone on to become more ubiquitous - and perhaps successful - than the Tomcat product for which it was created. Ant was first officially released as a stand-alone product on July 19, 2000, with Ant 1.1. It has come to be the underpinning of open source Java; developers expect a "build.xml" file with every project.

    Because it makes it trivial to integrate JUnit tests with the build process, Ant has made it easy for willing developers to adopt test-driven development, and even Extreme Programming.

    Other Java-based build tools include Maven and JavaMake *.

    The name is said to be an acronym for "Another Neat Tool". Coincidentally, the word "ant" was also used as an arbitrarily chosen project name in the paper Recursive Make Considered Harmful *, which described build-related problems that Apache Ant later proposed to resolve.

    top

    Sample
    Below is listed a sample build.xml file for a simple Java "Hello, world" application. It defines three targets - clean, 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.





    description="compile the Java source code to class files">



    description="create a Jar file for the application">

      /
        .class"/>







    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 (Ant will only do so 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:

    This ant task has the same name as the common java command-line utility, but is really a call to the ant program's predefined library. Most likely, this function in turn then calls the command-line utility behind the scenes, as is true of many of ant's tasks.

    top

    Extensions

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

    Other task extensions exist for Perforce, .Net, EJB, filesystem manipulations, just to name a few.

    top

    Portability
    One of the primary aims of Ant was to solve make's portability problems. In a Makefile the actions required to create a target are specified as shell commands which are specific to the current platform, usually a Unix shell. Ant solves this problem by providing a large amount of built-in functionality which it can then guarantee will behave (nearly) identically 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 which will probably not be available if the Makefile is used in a non-Unix environment such as Microsoft Windows. In an Ant build file the same thing would be accomplished using a built in command:


    A common discrepancy between different platforms is the way in which directory paths are specified. Unix uses a forward slash (/) to delimit the components of a path, whereas Windows uses a backslash (). Ant build files let authors choose their favorite convention, forward slashes or back slashes for directories, semicolon or colon for path separators. It converts everything to the appropriate format for the current platform.

    top

    Limitations
      Ant build files must be written in XML. Some consider this a barrier to new users as well as a problem in very large projects when build files can become very large and complex. This may be a problem common to all XML languages, but the granularity of Ant's tasks (compared to, say Maven), means that the scalability problems arrive early.

      Many of the older tasks—the core ones that are used every day, such as , and —use default values for options that are not consistent with more recent tasks. Changing those defaults would break existing tasks.

      When expanding properties in a string or text element, undefined properties are not raised as an error, but left as an unexpanded reference (e.g. $).

      Ant has limited fault handling rules, and no persistence of state, so it cannot be safely used to manage a multi-day build.

      The Ant target model does not treat artefacts as targets. In most build tools a target is an artefact created by the build -- a program, library, intermediate object file, PDF documentation, etc. -- and rules specify the dependencies between targets and the tasks to run to build a target when it is out of date. In ant a target is a group of tasks rather than an artefact. This means that Ant is sometimes unable to determine the relationship between an artefact and the task sequence to build the artefact and this logic must be implemented by the programmer using Ant's control structures.

    top

    See also


      Ivy, an dependency manager which integrates tightly with Ant.
     
    Search more:
     

       
    Source Privacy License Download Contact Us Atlas
    Scientus.org Dictionary (Yet Another Wiki) RC : 1.39
    This article is licensed under the GNU Free Documentation License [copyleft]. It uses material from the Wikipedia article "Apache Ant". link