Table of Contents
     This appendix briefly describes the deprecated xml-based ant
     backend, which was the only mechanism for building Java code in
     abuild 1.0.  To ease the transition to the newer Groovy-based
     framework, which still uses ant through Groovy's
     AntBuilder object, the old xml-based ant
     framework has been left largely intact.  With one notable change,
     it works just as it did in abuild 1.0.  New code should not use
     this framework.  The rest of this appendix is mostly excerpts
     from abuild 1.0's documentation with explicit examples removed.
     The text may not be entirely coherent because of the omissions.
     Although much of the text is written as if this is the supported
     way to build Java code (which it was when the text was originally
     written), in no way should anything in this appendix be taken as
     a suggestion that this backend should be used for new code.
    
     The one major difference is that abuild now invokes all Java
     builds from a single JVM.  This JVM runs one build per thread up
     to the number of threads specified by abuild's
     -j option.  In abuild 1.0, abuild actually
     ran an instance of the ant command, which it
     started with its current directory set to the output directory.
     Now, abuild launches ant through its Java API.  Although the
     basedir property is still set to the name of
     the output file, certain poorly-behaved tasks that don't use that
     for local paths may find themselves resolving local paths
     relative to abuild's start directory instead of the output
     directory.  This seems like a small price to pay though given
     that even the old ant framework runs many times faster using
     abuild 1.1's java build launcher as it prevents creation of a
     new JVM for each build.
    
     There are two different build files that trigger use of the
     deprecated xml-based ant framework:
     Abuild-ant.properties for property-driven
     builds, and Abuild-ant.xml for
     build.xml-driven builds.  The
     build.xml-based approach was introduced as a
     means to allow for greater flexibility in experimenting with
     alternative Java build approaches.  However, as use of ant
     through XML files has been abandoned in abuild 1.1, it no
     longer serves any purpose.  The way it works is that, if your
     build file is Abuild-ant.xml, abuild
     launches ant from the output directory using the source
     directory's Abuild-ant.xml as the build
     file.  Other than having to resolve paths relative to the output
     directory rather than the directory containing
     Abuild-ant.xml as well as having access to
     the .ab-dynamic-ant.properties file, this
     was essentially just using ant to do your builds.  Nothing
     further will be said about this method in this appendix.  The
     remainder of the appendix will focus only on the property-based
     build method.
    
     The Abuild-ant.properties file is the build
     configuration file for Java build items.  It serves the same
     function for Java build items as Abuild.mk
     serves for platform-independent and C/C++ build items.
    
Below is a list of supported properties. You can also see this list by running abuild properties-help from any Java build item.
         The name of the application.xml to put
         into an EAR file.  This must be set (along with
         abuild.ear-name) for an EAR file to be
         generated.
        
         The name of the EAR file, including the
         .ear suffix, to be generated.  This must
         be set for an EAR file to be generated.  EAR files contain
         any archive files in the abuild.classpath
         property.  They do not contain JAR files in the
         abuild.classpath.external property.
        
A comma-separated list of build items from which hooks should be loaded. For details about using hooks, see Section K.3, “Ant Hooks”.
         The name of the JAR file, including the
         .jar or other archive suffix, to be
         created by this build item.  This must be set in order for a
         JAR file to be generated.
        
         If specified, the value of this property will be used for the
         source attribute of the
         javac task.  Otherwise, the value will
         come from the abuild.java-target-version
         if set or from the Java environment used to run ant if not.
        
         If specified, the value of this property will be used for the
         target attribute of the
         javac task.  If
         abuild.java-source-version is not set and
         this property is, then this property's value will also be
         used to set the source attribute of the
         javac task.
        
         This property contains the name of the class that implements
         this build item's junit test suite.  It must be set in order
         for the test target to attempt to run a
         junit test suite.
        
The name of a local build file, specified relative to the build item's directory, that will be imported by ant. It may contain additional properties that can't be specified in a property file, resource collections, or even additional targets. If you are using this too often, please consider whether a build item hooks file should be used instead, or whether there is some functionality that is missing from the core abuild ant framework code.
         The name of a class, if any, that implements main.  Setting
         this property causes the Main-Class
         attribute to be set in the manifest file.  It also influences
         generation of the wrapper script if
         abuild.wrapper-name is set.
        
If set, ant runtime libraries will be included in the compilation classpath. This can be useful for compiling custom ant tasks.
         If this and abuild.local-buildfile are both
         set, abuild will attempt to run hooks from the local build file
         as well as from any hook build items.
        
         The name of the WAR file, including the
         .war suffix, to be generated.  This must
         be set for a WAR file to be generated.  WAR files contain any
         JAR files in the abuild.classpath property.
         They do not contain JAR files in the
         abuild.classpath.external property.
        
         The type of the WAR file, which must be either
         client or server.  This
         property determines where items in
         abuild.classpath are copied.  For
         client WAR files, classpath JAR files are
         copied into the root of the WAR file where the are accessible
         to clients' browsers.  For server WAR
         files, they are copied into the
         WEB-INF/lib directory of the WAR file.
        
         The name of the web.xml to put into a WAR
         file.  This must be set (along with
         abuild.war-name) for a WAR file to be
         generated.
        
         If this property and abuild.main-class are
         both set, a script by this name will be generated that will
         invoke the Java runtime environment to invoke this main.  The
         script will include the classpath as determined by abuild.
         On Windows, the script is usable to invoke the application
         from a Cygwin environment, and a stand-alone batch file (that
         does not reference the script or require Cygwin) is generated
         as well.
        
     Note that at most of one abuild.jar-name,
     abuild.war-name, or
     abuild.ear-name may be set for any given build
     item.