Ant 1.5
This is the 1.5 version of Ant. It is available in both
binary and source distributions.
Note:
The tar files in the distribution use GNU tar extensions
and must be untarred with a GNU compatible version of tar. The version
of tar on Solaris and Mac OS X will not work with these files
Changes
The changes from Release 1.4.1 to Release 1.5 are detailed below.
Please refer to the WHATSNEW file for more information.
Thank you for using Ant.
The Apache Jakarta Project
http://jakarta.apache.org/
PGP Signatures
Many of the distribution kits have been digitally signed (using
PGP). If so, there will be an accompanying
distribution.asc file in the same directory as
the distribution. The PGP keys can be found in the distribution
directory at <http://www.apache.org/dist/ant/KEYS>.
Always test available signatures, e.g.,
> pgpk -a KEYS
> pgpv jakarta-ant-src-1.5.tar.gz.asc
or,
> pgp -ka KEYS
> pgp jakarta-ant-src-1.5.tar.gz.asc
or,
> gpg --import KEYS
> gpg --verify jakarta-ant-src-1.5.tar.gz.asc
- The filesetmanifest attribute added to <jar> after the 1.4.1
release has been removed for now. This change may affect only
the 1.5Beta/1.6Alpha users. An attempt will be made to add this
feature back into Ant 1.6.
- <zip> and friends would always update existing archive if you set
the update attribute to true.
- To support backward compatibility with older versions, <pathconvert>
will once again set the property, even if the result is the empty
string, unless the new 'setonempty' attribute is set to false|no|off
(default is "true").
- The manifest task would crash XmlLogger
- added **/.svn and **/.svn/** to the default excludes
- Project.getBuildListeners now returns a clone of the listener
list. Changes to the returned list will not affect the listeners
currently attached to the Project. It also means that it is safe to
iterate over the returned list if listeners are added or removed
during the traversal.
- <pvcs> default filenameformat has been different from Ant 1.4.1.
Now it is different from 1.5beta1 and 1.5beta2.
- Some messages that are printed during startup will not be
written to the logfile specified via -logfile as they might destroy
the format of the file for special BuildLoggers (like XmlLogger).
- <pathconvert> won't set the property if the result is the empty string.
- <available> could fail to find files or directories that happen to
start with the name of the project's basedir but are not children of
the basedir.
- Nested <property>'s inside <ant> can now be overriden by subsequent
<ant> and <antcall> tasks.
- <xslt>'s outputtype attribute wouldn't do anything.
- <linecontains> filterreader could swallow lines.
- <sequential> used to configure the tasks (set their attributes)
before the first task has been executed. This means that properties
that have been set by nested task seemed to be unset for the other
tasks in the same <sequential> element.
- <javac>'s sourcepath setting has been ignored by some compiler
implementations.
- <javadoc>'s packagelist attribute didn't work.
- the plain mailer would always use port 25 in <mail>.
- Ant's default logger could swallow empty lines.
- ejbjar's iPlanet nested element now can process multiple descriptors.
- IPlanetEjbc was looking in the wrong place for four iiop files.
- <javac> would pass the -source switch to JDK 1.3's javac, even
though it doesn't support it.
- <checksum> now uses a buffer (of configurable size).
- The "Trying to override task definition" warning has been degraded
to verbose level if the two task definitions only differ in the class
loader instance that has loaded the definition.
- Add a jvmargs to the ejbjar's weblogic element to allow additional
arguments to be provided to the VM runnign ejbc. Document the
jvmdebuglevel attribute which can be used to avoid warnings about
interface classess being found on the classpath. Document the new
<sysproperty> element which allows JVM properties to be defined.
Added an outputdir attribute to allow the destination to be a
directory into which the exploded jar is written.
- ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5
- Properties will now be expanded in mail message bodies. This means
that one $ sign will be stripped if your mail message contains the text
$$.
- org.apache.tools.ant.taskdefs.Expand no longer extends MatchingTask.
- Available#setFile now again uses a File argument as it did in 1.4,
this may break environments that have been adapted to the String
argument version present in 1.5beta1.
- When <move> attempts a rename, it deletes the destination file, if it
exists, before renaming the source file. However, <move> was not
checking if the destination file was actually a directory before
trying to delete it.
- Make CVS Tasks to work under Cygwin.
- Fix LineContains to handle huge files elegantly without causing
Stack Overflows.
- if you ask for the "classic" compiler on Java1.4, you get upgraded to
"modern" because there is no classic compiler any more.
- the <http> condition was viewing 404 'not found' exceptions as success. Now
it defaults to viewing any response >=400 as an error, and has an errorsBeginAt
attribute you can use if you want a higher or lower value.
- <get> throws a build exception on an http authorization error, unless you
have set ignoreerrors to true.
- <wsdltodotnet> was spelt in Wintel case: <WsdlToDotnet>. It is now lower
case, though the old spelling is retained for anyone who used it.
- Merging of Manifests in jar now works as documented.
- paths that have been separated by colons would be incorrectly parsed
on NetWare.
- runant.pl now supports NetWare.
- <tempfile> and <setproxy> tasks were in beta1, but not defined by
default; They now are. <tempfile> fills a property with the name of a
temporary file; <setproxy> lets you set the JVM's http, ftp and socks proxy
settings.
- <available classname="foo" ignoresystemclasses="true"> failed for
JDK 1.1 and 1.2, even if the class could be found on the
user-specified classpath.
- <property environment=... /> now works on z/OS.
- forked <javac> failed for the wrong reason on JDK 1.1 - Ant would
use a temporary file to hold the names of the files to compile under
some conditons, but 1.1 doesn't support this feature. Ant will no
longer try this, but you may run into problems with the length of the
command line now.
- the refid attribute for <property>s nested into <ant> or <param>s
nested into <antcall> didn't work.
- <replaceregexp> didn't work for nested <fileset>s.
- <javadoc> dropped sourcepath entries if no "interesting" .java
source files could be found below them. This has been backwards
incompatible and caused problems with custom doclets like xdoclet.
- Using the doclet, docletpath or docletpathref attributes of
<javadoc> may have caused NullPointerExceptions.
- nested <filesets> of <javadoc> would include too much.
- <dependset> will no longer choke on <targetfileset>s that point to
non-existing directories.
- <patch> didn't work at all.
- <replace> and <replaceregexp> now fail if the file they are working
on is locked.
- <javadoc> would pick up the wrong executable in the combination JDK
1.2 and AIX.
- z/OS now gets detected by the os condition.
- <fileset> and <dirset> now have an optional followsymlink attribute
that can prevent Ant from following symbolic links on some platforms.
- BeanShell is now supported in the <script> task.
- <ejbjar> under Weblogic attempts to use the ejbc20 compiler for 2.0 beans
based on the deployment descriptor's DTD reference. Under weblogic 7.00 Beta
this ejbc class has been deprecated. To avoid the deprecation warning use
ejbcclass="weblogic.ejbc".
- <ejbjar> will add a manifest to the generated jar based on the naming
convention in use. This overrides the manifest specified in the
<ejbjar> attribute
- Important: Single $ signs are no longer silently stripped!
Before you panic that we have broken all your build files, we have kept
the old "$$" -> "$" behaviour. So only build files which accidentally had
a $ sign in a string that was being silently stripped may break.
We added this fix to stop newbie confusion; if you want to write a
build file which works on ant versions 1.4.1 or earlier, stay with
the double $$ sign rule.
- Shipped XML parser is now Xerces 2.0.1 along with the XML Parser APIs.
XML Parser APIs is a separate jar that contains the necessary
JAXP/DOM/SAX classes.
- <telnet> was fixed to expand properties inside nested <read> and
<write> elements; before this only happened when you assigned the text
to the string attribute. If you had $ signs in the string, they may
need escaping.
- the RegexpMatcher interface has been extended to support case
insensitive matches and other options - custom implementations of
this interface won't work any longer. We recommend to use the new
Regexp interface that also supports substitution instead of the
RegexpMatcher interface in the future.
- <gzip> will throw an exception if your src attribute points to a directory.
- Unjar, Unzip and Unwar will throw an exception if the Src attribute
represents a directory. Support for nested filesets is provided
instead.
- It is no longer possible to overwrite a property using tasks like
<condition>, <exec>, <pathconvert>, or <tstamp>. In some exceptional
cases it will generate a warning if you attempt to overwrite an
existing property.
- Taskwriters please note: Whenever tasks had any overloaded set* methods,
Ant's introspection mechanism would select the last overloaded method
provided to it by the Java Runtime. A modification has now been made such
that when the Java Runtime provides a method with a String as its argument,
a check is made to see if there is another overloaded method that takes in
some other type of argument. If there is one such method, then the method
that takes in String as an argument is not selected by the Introspector.
- The pattern definition **/._* has been included into the Default
Excludes list.
- <propertyfile>'s <entry> element was modified to remove "never" as a value
as its behavior was undocumented and flakey.
- The -projecthelp flag now only prints out targets that include the
'description' attribute, unless the -verbose or -debug flag is included
on the Ant command line.
- Ant's testcases now require JUnit 3.7 or above, as they now use the new
assertTrue method instead of assert.
- If the 'output' attribute of <ant> is set to a simple filename or a
relative path, the file is created relative to ${basedir}, not ${user.dir}.
- The default value for build.compiler is now javac1.x with x
depending on the JDK that is running Ant instead of classic/modern.
- A bug existed that prevented generated log files from being deleted as
part of the build process itself. This has now been fixed.
- Fixed bug where <move> ignored <filterset>s.
- Ant works properly with the combination of Java1.4/WindowsXP.
- Fixed bug where <java> used to sometimes invoke class constructors twice.
- Fixed bug with 4NT shell support.
- Fixed bug where ant would not perform ftp without remotedir being
specified even though this was not mandatory.
- Fixed bug where ant would not copy system properties into new Project
in ant/antcall tasks when inheritall="false" is set.
- <propertyfile> would not close the original property file.
- <ant> will no longer override a subbuild's basedir with inheritall="true".
- Fixed problem with the built-in <junit> formatters which assumed
that only one test could be running at the same time - this is not
necessarily true, see junit.extensions.ActiveTestSuite.
- <jar>'s whenEmpty attribute is useless as JARs are never empty, they
contain at least a manifest file, therefore it will now print a
warning and do nothing.
- <typedef> hasn't been all that useful as it couldn't be used outside
of targets (it can now) and nested "unknown" elements have always
been considered to be tasks (changed as well).
- <fixcrlf> would fail for files that contained lines longer than 8kB.
- Some junit formatters incorrectly assumed that all testcases would
inherit from junit.framework.TestCase.
- <fixcrlf> dropped the first characters from Mac files.