blob: f17bf4b62c2c599eb70723154d008d2659097208 [file] [log] [blame]
Changes from Ant 1.10.9 TO Ant 1.10.10
Changes from Ant 1.10.8 TO Ant 1.10.9
Fixed bugs:
* the ftp task could throw a NullPointerException if an error occured
Bugzilla Report 64438
* propertyset now also sees in-scope local properties
Bugzilla Report 50179
* replaced our version of ReaderInputStream with the battle-tested
version of Apache Commons IO as our version had problems with
surrogate pairs (and likely other edge cases as well).
Bugzilla Report 40455
* <fixcrlf> will no longer remove the temporary file it just created
before writing to it.
* <sshexec> and <scp> didn't deal with wildcard hostnames in ssh
config files properly.
Bugzilla Report 64530
Other changes:
* Ant will no longer log a warning if it doesn't find tools.jar
Bugzilla Report 63577
* the <jar> task accepts now a nested <indexjarsmapper> element
that can be used to perform custom filename transformations
for the <indexjars> archives.
Github Pull Request #134
* added a new PropertyEnumerator interface that extensions can
provide if they are managing properties unknown to the Ant project.
* added some special code to support GraalVM JavaScript as
javax.script scripting engine for JavaScript. In particular we
relax some security settings of GraalVM so that scripts can access
Ant objects.
Also Ant enables Nashorn compatibility mode by default, you can
disable that by setting the magic Ant property
ant.disable.graal.nashorn.compat to true.
See the script task manual for additional details.
* If the magic property ant.tmpdir hasn't been set and Ant can
control the permissions of directories it creates it will create an
owner-owned temporary directory unaccessible to others as default
tempdir as soon as a temporary file is created for the first time,
Changes from Ant 1.10.7 TO Ant 1.10.8
Fixed bugs:
* "legacy-xml" formatter of junitlauncher task wasn't writing out
the stacktrace for failures. This is now fixed.
Bugzilla Report 63827
* sshexec failed to write output to a file if the file didn't exist
* Fixes a regression in javac task involving command line argument
Bugzilla Report 63874
* sshexec, sshsession and scp now support a new sshConfig parameter.
It specified the SSH configuration file (typically ${user.home}/.ssh/config)
defining the username and keyfile to be used per host.
* "legacy-xml" formatter of junitlauncher task wasn't writing out
exceptions that happen in @BeforeAll method of a test. This is now fixed.
Bugzilla Report 63850
* Building Ant from source could result in the javadocs target failing if the
optional dependencies were missing. This has now been fixed.
Bugzilla Report 63438
* Fixes a potential ConcurrentModificationException in XMLLogger.
Bugzilla Report 63921
* Fixes a bug in junitlauncher task in forked mode, where if a listener element
was used as a sibling element for either the test or testclasses element,
then the forked mode launch would fail.
Bugzilla Report 63958
* Fixes an issue in AntStructure where an incorrect DTD was being generated.
Github Pull Request #116
* Fixes an incorrect variable name usage in junit-frames-xalan1.xsl.
Github Pull Request #117
Other changes:
* will now send a fully qualified
domain name in its HELO message.
Github Pull Request #101
* The script should now work with Python 3.
Github Pull Request #96
* tstamp task now honors SOURCE_DATE_EPOCH environment variable for
reproducible builds (
Bugzilla Report 62617
* rmic has been removed from Java 15. The task will now throw an
exception if you try to use it while running Java 15 or newer.
* a new property ant.tmpdir provides improved control over the
location Ant uses to create temporary files
Changes from Ant 1.10.6 TO Ant 1.10.7
Fixed bugs:
* FTP still tries checking or entering directories after a timeout
Bugzilla Report 63454
* junitlauncher - does not detect failure in @BeforeAll
Bugzilla Report 63479
* Error using ant-1.10.6 with jdk8
Bugzilla Report 63457
* FTP task no longer duplicates a check for a file being a symlink.
Bugzilla Report 63259
* junitlauncher task, when used in fork mode with "<testclasses>",
used to create the wrong number of listeners per test class. This
has now been fixed.
Bugzilla Report 63446
* The "legacy-xml" junitlauncher task's listener would not include
@ParameterizedTest testcases in its XML report file. This has now
been fixed.
Bugzilla Report 63680
Other changes:
* FTP task timeout improvements.
Bugzilla Reports 63252 and 47414
* junitlauncher task now supports selecting test classes for execution,
based on the JUnit 5 tags, through the new "includeTags" and
"excludeTags" attributes.
* prefer https over http when building ant itself, and in the ant
documentation and sources
* changed the references and Maven coordinates of JavaMail dependency
to Jakarta Mail and thus javax.mail to jakarta.mail - and upgraded
the dependency to 1.6.3.
Changes from Ant 1.10.5 TO Ant 1.10.6
Changes that could break older environments:
* image task no longer works on Java 9+ because internal classes
supporting Java Advanced Imaging are removed; imageio task (based on
ImageIO and AWT) is provided as a replacement.
* junitlauncher task has changed the class names and package names of
the task as well as some of the supporting classes of that task. If
any code depended on these class or package names, they will have to
be updated to reference these newly named classes. This however,
doesn't impact build scripts if their reference to junitlauncher task
was merely through the use of the <junitlauncher> element.
* ClearCase#runS has been augmented by a two arg-version and the
one-arg version will no longer be called. This may affect
subclasses that have overridden runS.
Fixed bugs:
* fetch.xml must retrieve runtime rather than compile dependencies for
mail task.
Bugzilla Report 62621
* Fixes an issue in junitreport task, which used to throw a when saxon was used on Windows OS.
Bugzilla Report 62594
* augment task now throws a BuildException (as noted in its manual)
instead of a IllegalStateException in the absence of the "id" attribute.
Bugzilla Report 62655
* would sometimes potentially use
an incorrect compression level for a zip entry. This is now fixed.
Bugzilla Report 62686
* sync task, in some cases on case insensitive file systems, would consider
a file in a destination directory to be orphaned and would delete it.
This task has now been fixed to infer the case sensitivity of the filesystem
of the destination directory.
Bugzilla Report 62890
* Fixes a potential java.util.ConcurrentModificationException in
Github Pull Request #81
* cccheckout would ignore an error of the "ls checkout" command even
if failOnError was set to false.
Bugzilla Report 63071
* The isreachable condition could in some cases return true even if the
actual address could potentially be unreachable. This is now fixed
and the resolved address is actually checked for reachability.
* Fixes an issue where scp transfer completion tracking wasn't being
triggered for 100% completion.
Github Pull Request #91
Other changes:
* generatekey task now supports SubjectAlternativeName during key
* the <modified> selector has a new built-in algorithm 'lastmodified'
which computes a value based upon the lastmodified time of the file.
* junitlauncher task now supports running tests in a forked JVM. More
details available in the junitlauncher task manual.
* signjar and verifyjar now support the -providerName, -providerClass
and -providerArg command line options of keytool via new attributes.
Bugzilla Report 65234
* signjar and verifyjar now supported nested <arg> elements for
command line arguments that are not supported explicitly by the
tasks via attributes.
* added several attributes to <javadoc> that support modules.
Bugzilla Report 62424
* properties used or set by BuildFileTask/BuildFileRule are documented
in MagicTestNames. A new magic property, ant.test.basedir.ignore, is
introduced for cases where Ant projects set up for test purposes
must ignore basedir set externally by test harness.
* a new CharSet type is provided for encoding or charset attributes in
tasks that must deal with different character encodings in files,
file names and other string resources.
* is now multi-release jar aware.
Starting Java 9, jar files can be packaged as multi-release jars,
AntClassLoader now recognizes such multi-release jar files while
loading resources at runtime in Java 9+ runtime environments.
Bugzilla Report 62952
* Added jmod and link tasks, to support jmod and jlink tools of JDK 9+.
Github Pull Request #80
* Jsch library dependency has now been upgraded to 0.1.55. Jsch is
the library behind the sshexec and scp Ant tasks.
Github Pull Request #84
* The "http" condition, now has a "readTimeout" attribute which can be
used to control the amount of time to wait for the read to complete.
Bugzilla Report 63193
* ftp task manual has been updated to mention that the remote listing of
files honours the followsymlinks attribute.
Bugzilla Report 63226
Changes from Ant 1.10.4 TO Ant 1.10.5
Fixed bugs:
* Fixes a regression in the "get" task where redirects
from a HTTP resource to a HTTPS resource started throwing
an exception.
Bugzilla Report 62499
* the new allowFilesToEscapeDest didn't work when set to false and
archive entries contained relative paths with so many ".."
segnments that the resulting path would go beyond the file system
Bugzilla Report 62502
Other changes:
* Java task now accepts a "sourcefile" attribute to allow single file
source program execution, a feature that is introduced in Java 11.
Changes from Ant 1.10.3 TO Ant 1.10.4
Changes that could break older environments:
* <unzip>, <unjar> and <untar> will no longer extract entries whose
names would make the created files be placed outside of the
destination directory anymore by default. A new attribute
allowFilesToEscapeDest can be used to override the behavior.
Another special case is when stripAbsolutePathSpec is false (which
no longer is the default) and the entry's name starts with a
(back)slash and allowFilesToEscapeDest hasn't been specified
explicitly, in this case the file may be created outside of the
dest directory as well.
In addition stripAbsolutePathSpec is now true by default.
Based on a recommendation by the Snyk Security Research Team.
Fixed bugs:
* Delay the class initialization of the test classes until they are
passed to JUnit. This way we can avoid that failing static initializers
from non-test classes are reported as error when the 'skipNonTests' option
is 'true'.
Bugzilla Report 60062
* The junit task when used with includeantruntime="no" was incorrectly
printing a warning about multiple versions of ant detected in path
* <cab> died with a NullPointerException since Ant 1.10.2.
Bugzilla Report 62335
* The <depend> task would fail with
"java.lang.ClassFormatError: Invalid Constant Pool entry Type 19" while
parsing a module-info.class. The task is compatible with
Java bytecode version 53 now.
Bug reported by Simon IJskes
* Default and SecureInputHandler will now raise an error when then
end of the input stream (usually or System.console) are
reached before a valid input has been read.
* junitreport does not list testsuites that fail to start any tests
because of an exception inside the all-tests and alltests-errors frames.
Bugzilla Report 62443
Other changes:
* AntAssert is deprecated, assertThat from JUnit 4.4+, Hamcrest matchers and/or
ExpectedException rule provide equivalent functionality
* PumpStreamHandler now explicitly verifies the streams for output
and error are not null and will throw an exception if they
are. This way creating a PumpStreamHandler will fail early as
opposed to some obscure errors later when closing streams or
finishing threads might fail.
Bugzilla Report 62148
* <property> has a new attribute runtime which can be used to set
properties with values taken as snapshots from the
availableProcessors, freeMemory, maxMemory and totalMemory methods
of the Java Runtime class.
* linecontains filter now has a new "matchAny" attribute which when
set to "true" allows any (instead of all) of the user-specified
strings to be present in the line.
Bugzilla Report 62313
* <resourcelist> has a new basedir attribute that can be used to
resolve relative names and provides a root for the FileResources
Bugzilla Report 62379
* The <includesfile> and <excludesfile> nested elements of
<patternset> and <fileset> now support an encoding attribute that
can be used to specify the file's encoding.
Bugzilla Report 62379
* New file selectors, posixGroup and posixPermissions, are available.
The new selectors and related ownedBy selector have "followSymlinks"
attribute that defaults to "true" for consistency.
Bugzilla Report 22370
* The junitlauncher task now has a "printSummary" attribute which when
set to "true" will print the test execution summary to System.out.
Changes from Ant 1.10.2 TO Ant 1.10.3
Changes that could break older environments:
* Previous versions of Ant's copy task would throw a BuildException
if the "name" of the resource to copy was null. Starting
this version, the copy task instead silently skips such resources
and no longer throws an exception.
ant-dev list
* Reverted the signature change of various clone method
implementation in Ant's data-types introduced with 1.10.2 as they
broke subclasses of said data-types which tried to override clone.
Fixed bugs:
* Fixed NullPointerException in ChainedMapper
Bugzilla Report 62086
* Fixed NullPointerException when a mappedresource is used in pathconvert
Bugzilla Report 62076
* Fixed an issue where a string, when used as a resource collection, within
tokens, would be replaced by property values
Bugzilla Report 62147
* Added a workaround for a bug in the jarsigner tool to <verifyjar>
which requires the -storepass command line argument when verifying
signatures using -strict together with a PKCS12 keystore. Unlike
when signing the jar it will not prompt for the keystore's password
and read it from standard input.
This means Ant will now pass the keystore's password on the command
line when using <verifyjar>, which poses a security risk you should
be aware of.
Bugzilla Report 62194
Other changes:
* Allow Saxon to be used for junitreport XSL transformation
Github Pull Request #57
* when running on Java 11+ rmic will fail early if iiop or idl are
requested. Java 11 removes support for CORBA and the switches have
been removed from the rmic tool.
* A new junitlauncher task which support JUnit 5 test framework.
Bugzilla Report 61796
Changes from Ant 1.10.1 TO Ant 1.10.2
Changes that could break older environments:
* updated the dependency of BCEL to 6.2.
Bugzilla Report 61196
* delete task previously would silently accept wildcard (*)
value for the "file" attribute. That's no longer the case
and an exception could get thrown by the underlying filesystem
for such use. Usage like:
<delete file="/foo/bar/*.something"/>
should instead be changed to use resource collections like:
<fileset dir="/foo/bar/" includes="*.something"/>
* Commons Net 3.6 is binary-code, but not source compatible;
see change list of Commons Net 3.0 for details
* The Log4jListener is marked as deprecated as the required log4j library
(in version 1.x) is not maintained any more.
* Image task is marked as deprecated as the required JAI library is not
maintained any more and internal APIs that JAI depended on are no longer
available in Java 9.
Fixed bugs:
* <genkey>'s <dname> child now skips <param>s that lack a key or
Bugzilla Report 60767
* bootstrapping Ant on Windows failed
Bugzilla Report 61027
* Fixed the issue where the SCP based tasks would try to change
the permissions on the parent directory of a transferred file,
instead of changing it on the transferred file itself.
Bugzilla Reports 59648 and 43271
* Fixed the issue where the source file being copied could end
up being corrupted if the target of the copy happened to be
the same source file (symlinked back to itself).
Bugzilla Report 60644
* Fixed the issue where symlink creation with "overwrite=false",
on existing symlink whose target was a directory, would end
up creating a new symlink under the target directory.
Bugzilla Report 58683
* Improvement to the Zip task for reduced memory usage in certain
cases. Thanks to Glen Lewis for reporting the issue and
suggesting the fix.
Bugzilla Report 19516
* Fixed an issue where the content redirected from output/error
streams of a process, could end up being truncated.
Bugzilla Report 58833, 58451
* <fileset>/<zipfileset>/<tarfileset> will now throw an exception
with a more useful error message when setFile is called twice on
the same instance.
Bugzilla Report 62071
Other changes:
* Added forceCsvQuoteChar option to <csv> task. When enabled the
values always get quoted.
Github Pull Request #32
* Added <encoding> attributes to various script related tasks and a
compiled attribute to scriptdef.
Github Pull Request #30
* Added support for jarsigner's -tsadigestalg to <signjar>.
Bugzilla Report 60665
* added "regexp" attribute to <linecontainsregexp>
Bugzilla Report 60968
* reduced GC pressure by replacing all usage of FileInputStream and
* Task can now also use attribute setters that expect a
java.nio.file.Path argument.
Bugzilla Report 61042
* added a new magic property that can be used to
override the current time/date used by <tstamp>.
Bugzilla Report 61079
* added Orion support to ejbjar
Github Pull Request #33
* SCP task, when configured to use SFTP protocol, now preserves last
modified timestamp on files that it uploads, if the
preserveLastModified attribute is set to true for that task
Bugzilla Report 58589
* zip and the related tasks can now set the modification time of all
entries to a fixed timestamp.
Github Pull Request #36
* Jsch library dependency has now been upgraded to 0.1.54. Jsch is
the library behind the sshexec and scp Ant tasks.
Bugzilla Report 61718
* Added a new <javaversion> condition.
* added "javac10+" as new supported value for javac's compiler attribute.
* javah has been removed from Java 10. The task will now throw an
exception if you try to use it while running Java 10 or newer.
* Updated Maven Ant Tasks, Jakarta Regexp and JUnit 4 to the latest
stable version (2.1.3, 1.4, and 4.12 respectively); updated
JRuby to the latest Java 5 compatible version (1.6.8); added
resolve target for AntUnit to facilitate updates.
Github Pull Request #50
* Updated Java Mail API, Jython, Rhino and Commons Net to the latest
stable version (1.6.0, 2.7.0, and 3.6, respectively).
Github Pull Request #53
Changes from Ant 1.10.0 TO Ant 1.10.1
Fixed bugs:
* Ant 1.10.0 made Path#systemClasspath final which broke the Eclipse
Bugzilla Report 60582
* the wrapper script still didn't work on Solaris 10, but worked on
Solaris 11.
The "fixed" script should work in most cases but will not preserve
newlines present in command line arguments.
Bugzilla Report 60562
Other changes:
* new tasks <xz> and <unxz> and resource <xzresource> for XZ
compression. Also the compression attribute of <tar>/<untar> now
accepts "xz" as valid value.
The tasks and type are contained in the new ant-xz.jar and require
the library XZ for Java to be on the CLASSPATH.
Bugzilla Report 60350
Changes from Ant 1.9.7 TO Ant 1.10.0
Changes that could break older environments:
* Ant 1.10.x requires Java8 or newer at compile or build time.
The 1.9.x series wil stay compatible with Java5.
* The <apt> task has been removed since apt itself has been removed
with Java8.
* <fileset>/<zipfileset>/<tarfileset> exhibited undefined
behavior when both the dir and file attribute have been used on the
same instance. This will now cause the build to fail.
Bugzilla Report 59402
* <native2ascii> will default to the builtin implementation on Java8
as well (sun isn't available for Java9+ anyway).
* The property will now hold the value "9" rather
than "1.9" if running on Java 9.
* <rmic> will no longer allow the -Xnew option (or xmic compiler) to
be used when running on Java 9 since this option has been removed.
Bugzilla Report 59906
* <javah> will default to the "forking" implementation on Java8
as well.
Fixed bugs:
* setDynamicAttribute on MacroInstance now lower-cases the attribute
name in order to allow users of the API to use the attributes names
they have specified.
Bugzilla Report 59339
* <get>'s quiet attribute was broken, it didn't suppress any messages.
Bugzilla Report 59379
* <zip>'s check whether an archive is already up-to-date failed on
NTFS filesystems and re-created archives more often than necessary.
Bugzilla Report 59562
* AntClassLoader didn't delegate to the parent loader for classes in
the "jdk" package or one of its subpackages. This hierarchy has
been introduced with Java 7.
Bugzilla Report 59556
* The ant wrapper script used on Unix-like operating systems only
worked on OSes where sed is GNU sed.
Bugzilla Report 59898
* <touch>'s default pattern as well as the default patterns used by
the <date> (resource) selectors depended on the JDK being used - or
rather the locale provider being used and the default locale
provider changed with Java 9.
They are now fixed and the documentation has been updated to
reflect the real patterns used rather than a non-formal description
of the expected format.
Bugzilla Report 59909
* Clarified the documentation of <get>'s retries attribute.
Bugzilla Report 59930
* The ant wrapper script failed if backticks were passed on the
command line.
Bugzilla Report 60150, 59445
* The report generated by <junitreport> could contain duplicate
characters in stack traces.
Bugzilla Report 58661
Other changes:
* New file selectors <executable>, <symlink> and <ownedBy>.
* New task <setpermissions> that provides the ability to set POSIX
compatible permssions via NIO's PosixFilePermission
* <junit> now initializes the cause of the AssertionFailedError when
converting from AssertionError.
Bugzilla Report 58982
* <scp> now supports compression via the optional compressed attribute.
Bugzilla Report 47552
* <junit> now supports JDK9 modules
Github Pull Request #18
* a new implementation "builtin" has been added to <native2ascii> and
is the default when running on JDK9+ since the tool itself has been
removed from the JDK.
Bugzilla Report 59855
* added a new <native2asciifilter> filter that can perform non-ASCII
to Unicode-escape conversions.
* <rmic> defaults to the "forking" compiler on JDK 9+ as the
implementation class of rmic is not exported by its containing
module and thus not accessible to Ant without applying -XaddExports
Bugzilla Report 59860
* a new implementation "forking" has been added to <javah> and is
used as default when running on JDK9.
* support for javac's -h switch has been added with the
nativeheaderdir attribute.
Bugzilla Report 59905
* it is now possible to set features of the TraX factory used by <xslt>
and <junitreport>.
* it is now possible to use references to Ant types and classloaders
built around Ant <path>s as values for TraX factory attributes.
* AntClassLoader and its subclasses register themselves as parallel
* <junitreport> now enables the feature
when run on Java 9 so the redirect extension function can be used
if when a SecurityManager is active.
Bugzilla Report 60060
* support for javac's --release switch introduced with Java9 has been
Bugzilla Report 60172
Changes from Ant 1.9.6 TO Ant 1.9.7
Changes that could break older environments:
* <exec> and <apply> used to ignore the dir attribute if it was the
same as the current working directory. They now no longer do,
which changes the behavior for vmlauncher="false" which would have
used the project's basedir rather than the current working
directory in that case.
Bugzilla Report 58555
Fixed bugs:
* ZipOutputStream could cause an ArrayIndexOutOfBoundsException when
adding entries with comments. This never happens when using Ant as
a build tool but may affect users using Ant's zip package as a
* <gunzip> and <bunzip2> didn't work for non-filesystem resources.
* <jar> ignored the zip64Mode attribute when creating manifest-only
jars. This resulted in jar files that couldn't be read by Java5.
Bugzilla Report 58428
* <untar> will now detect GNU tar longname/link records even if they
don't use the names used by GNU tar itself. star is known to
create archives of that kind.
* <script> could fail to find javax.script on JDK9 with Jigsaw.
Bugzilla Report 58271
* <import> sometimes failed to normalize file names which could lead
to files getting imported twice which in turn could lead to targets
getting executed twice.
Bugzilla Report 58886
* TarInputStream now properly extraxt directory entries with a
non-zero size.
* <union> would drop file resources pointing to the same file but
using different names.
Bugzilla Report 57965
* <replace>'s result was undefined when using the replacefilterfile
attribute and some keys inside the properties files have been
substrings of other keys. Keys are now sorted by descending size.
Bugzilla Report 58997
* Ant fails to run when arguments contain double-quote character.
Bugzilla Report 58898
* Ant fails to run if ANT_HOME contains a double-quote character.
Bugzilla Report 58874
* Definer's way to parse URLs from classloader breaks with
recent Java 9 builds (b108).
Bugzilla Report 59130
* <ant> and <antcall> now preserve the ext status set by an <exit>
Bugzilla Report 59228
Other changes:
* <scp> now supports (filesystem-only) resource collections in
addition to filesets.
Bugzilla Report 50769
* The <http> condition has a new optional attribute followRedirects.
Bugzilla Report 58840
* <java> now supports Java9 modules.
* <javac> now supports Java9 modules.
* <sshexec> and <scp> have two new attributes serverAliveInterval and
serverAliveCountMax that can be used to keep a intermediaries from
closing idle connections.
Bugzilla Report 59162
Changes from Ant 1.9.5 TO Ant 1.9.6
Changes that could break older environments:
Fixed bugs:
* ArrayIndexOutOfBoundsException when ZIP extra fields are read and
the entry contains an UnparseableExtraField.
Other changes:
* Hidden <javaconstant> resource is published now. It reads the
value of a specified java constant.
Changes from Ant 1.9.4 TO Ant 1.9.5
Changes that could break older environments:
* The ReplaceTokens filter can now use token-separators longer than
one character. This means it can be used to replace mustache-style
{{patterns}} and similar templates. This is going to break code
that invokes the setters on ReplaceTokens via the Java API as their
parameters have been changed from char to String. It may also
break build files that specified multi character tokens and relied
on Ant silently ignoring all but the first character.
Bugzilla Report 56584
* The changes that added <get>'s support for gzip encoding
automatically uncompressed content that would not have been touched
before - like when downloading .tar.gz files. A new flag has been
added to control the behavior and its default will make <get> work
as it did in 1.9.3. I.e. if you want it to work like 1.9.4
you have to explicitly set tryGzipEncoding to true.
Bugzilla Report 57048
Fixed bugs:
* TarArchiveInputStream failed to read archives with empty gid/uid
Bugzilla Report 56641
* TarArchiveInputStream could throw IOException when reading PAX
headers from a "slow" InputStream.
* XMLJunitResultFormatter could throw NullPointerException if Java
cannot determine the local hostname.
Bugzilla Report 56593
* URLResource#getLastModified tried to access the connection to the
URL without making sure it was established, potentially leading to
a NullPointerException when using FTP.
Bugzilla Report 56873
* Long-Name and -link or PAX-header entries in TAR archives
always had the current time as last modfication time, creating
archives that are different at the byte level each time an
archive was built.
* should now work as well when the path of the Java executable
contains spaces.
github pull request #1
* <junitreport> now supports nested <classpath> and <factory> elements.
Bugzilla Report 47002
* now also knows about the -file option.
Bugzilla Report 57371
* the br-replace template inside the XSLT stylesheets used by
<junitreport> could cause stack overflows or out-of-memory errors
when applied to big outputs.
Bugzilla Report 57341
* removed spurious warning about unclosed ZipFiles when reading the
archive failed.
Port of
* FileUtils.rename which is used by several tasks can throw a
NullPointerException if the "normal" renameTo operation fails and
an exception occurs while rename falls back to copying and deleting
the file.
Bugzilla Report 57533
* would incorrectly suggest words from the build
file description.
Bugzilla Report 51931
* now also completes tasks without a description.
Bugzilla Report 57542
* LocalPropertyStack could run into ConcurrentModificationException
when tasks spawned new child threads that accessed the properties.
Bugzilla Report 55074
* TarEntry's constructor with a File and a String arg didn't
normalize the name.
* Between 1.8.4 and 1.9.0 TarInputStream started to parse file
names using the platform's default encoding rather than as ASCII.
This has been a breaking change that has never been marked as such
(in fact it went unnoticed). In order to allow <untar> and
<tarfileset> to work on platforms who's encoding doesn't match the
encoding of file names inside the archive, both now support
encoding attributes.
The attribute has also been added to <tar> for symmetry.
Bugzilla Report 57822
Other changes:
* it is now possible to provide proxy configuration to signjar
when using the timestamped authority.
Bugzilla Report 56678
* now also analyzes the ANT_ARGS environment
Bugzilla Report 57371
* ported some of the write-optimization of Commons Compress 1.10 to
the ZIP package
* adapted unit tests to Java9 and added "javac1.9" as valid option
for javac's compiler attribute.
* performance improvements for <intersect>
Bugzilla Report 57588
* MailLogger can now add CC and BCC addresses.
Bugzilla Report 57789.
* <scp>'s buffer size has been increased from 1k to 100k to match
<ftp> and <get>.
github pull requests #8 and #9
* The tar package can now deal with group and user ids bigger than
* <scp> has new attributes fileMode and dirMode that control the
permissions on the remote side when sending data via SSH.
Bugzilla Report 43271.
* New <allbutlast> and <allbutfirst> resource collections can be used
to select all but a given subset of a resource collection.
Bugzilla Report 57834.
Changes from Ant 1.9.3 TO Ant 1.9.4
Changes that could break older environments:
* the prefixValues attribute of <property> didn't work as expected
when set to false (the default).
It is quite likely existing build files relied on the wrong
behavior and expect Ant to resolve the value side against the
properties defined in the property file itself - these build files
must now explicitly set the prefixValues attribute to true.
Bugzilla Report 54769
* when matching an entry of a zip/tarfileset against a pattern a
leading slash will be stripped from the entry name. Most archives
don't contain paths with leading slashes anyway.
This may cause include/exclude patterns that start with a / to stop
matching anything. Such patterns only used to work by accident and
only on platforms with multiple file system roots.
Bugzilla Report 53949
* DirectoryScanner and thus fileset/dirset will now silently drop all
filesystem objects that are neither files nor directories according
to This prevents Ant from reading named pipes which
might lead to blocking or other undefined behavior.
Bugzilla Report 56149
* BuildFileTest and BaseSelectorTest have both been deprecated in
favour of BuildFileRule and BaseSelectorRule respectively, and the
tests that previously extended these base tests have been converted to
JUnit 4 tests using the new "rule"s. Any external test that sub-classed
a test in the Ant workspace, rather than BuildFileTest, will need
changed to either use JUnit4's annotations, or be modified to
extend BuildFileTest directly. This will not affect any tests that are
being executed by Ant's junit or batchtest tasks that are not specifically
testing Ant's code.
Fixed bugs:
* <import>/<include> failed when the importing file was loaded from an
URI or a jar and it imported a file from the local file system via
an absolute path.
Bugzilla Report 50953
* <import> could import the same resource twice when imported via
different resource types.
Bugzilla Report 55097
* several calls to File#mkdirs could fall victim to a race condition
where another thread already created the same directory.
Bugzilla Report 55290
* <manifestclasspath> created '/' rather than './' for the parent
directory of the given jarfile.
Bugzilla Report 55049
* <concat>'s fixlastline="true" didn't work when using certain filter
Bugzilla Report 54672
* several places where resources are read from jars will now
explicitly disable caching to avoid problems with reloading jars.
Bugzilla Report 54473
* AntClassloader will now ignore files that are part of the classpath
but not zip files when scanning for resources. It used to throw an
Bugzilla Report 53964
* <javadoc> caused a NullPointerException when no destdir was set.
Bugzilla Report 55949
* <jar filesetmanifest="mergewithoutmain"> would still include the
Main section of the fileset manifests if there was no nested
manifest or manifest attribute.
Bugzilla Report 54171
* reading of compiler args has become more defensive
Bugzilla Report 53754
* <copy> without force="true" would not only fail to overwrite a
read-only file as expected but also remove the existing file.
Bugzilla Report 53095
* <delete removeNotFollowedSymlinks="true"> would remove symbolic
links to not-included files. It will still delete symlinks to
directories that would have been followed even if they are not
explicitly included. exclude-Patterns can still be used to
preserve symbolic links.
Bugzilla Report 53959
* Sometimes copy-operations using NIO FileChannels fail. Ant will
now try to use a Stream based copy operation as fallback when the
Channel based copy fails.
Bugzilla Reports 53102 and 54397
* Javadoc.postProcessGeneratedJavadocs() fails for Classes that
extend Javadoc
Bugzilla Report 56047
* TarInputStream will now read archives created by tar
implementations that encode big numbers by not adding a trailing
* the isExists() method of URLResource returned false positives for
Other changes:
* initial support for Java 1.9
* <sshexec> can optionally pass to the remote process
Bugzilla Report 55393
* <sshexec> now supports capturing error output of the executed
process and setting a property from the return code.
Bugzilla Report 48478
* <javadoc> now has an option to fail if javadoc issues warnings.
Bugzilla Report 55015
* <sql> has a new outputencoding attribute.
Bugzilla Report 39541
* changes to JUnitTestRunner and PlainJUnitResultFormatter to make
OutOfMemoryErrors less likely.
Bugzilla Report 45536
* changes to DOMElementWriter to make OutOfMemoryErrors less likely.
Bugzilla Report 54147
* <redirector> has a new attribute binaryOutput that prevents Ant
from splitting the output into lines. This prevents binary output
from being corrupted but may lead to error and normal output being
mixed up.
Bugzilla Report 55667
Bugzilla Report 56156
* the nested <message> elements of <mail> now have an optional
inputEncoding attribute that can be used to specify the encoding of
files read that don't use the platform's default encoding.
Bugzilla Report 56258
* The <get> task now explicitly accepts and supports the gzip content encoding.
Bugzilla Report 49453
* A new resourcecollection type <multirootfileset> acts like a union
of <fileset>s and <dirset>s that share the same configuration but
have different base directories.
Bugzilla Report 48621
* <get> has a quiet attribute that makes the task log errors only
when enabled.
GitHub Pull Request #1
* <junit> has now a threads attribute allowing to run the tests in several threads.
Bugzilla Report 55925
* addition of a new ProcessUtil class providing the process id of the current process
* changes to allow to run the JUnit testcases of Ant in parallel,
by making them use unique temporary directories
Changes from Ant 1.9.2 TO Ant 1.9.3
Fixed bugs:
* <parallel> swallowed the status code of nested <fail> tasks.
Bugzilla Report 55539.
* a race condition could make <fixcrlf> tasks of parallel builds to
interfere with each other.
Bugzilla Report 54393.
* <mail>'s mailport still didn't work properly when using smtps.
Bugzilla Report 49267.
* using attributes belonging to the if and unless namespaces
made macrodef fail.
Bugzilla Report 55885.
* Ant 1.8 exec task changes have slowed exec to a crawl
Bugzilla Report 54128.
* Apt is not available under JDK 1.8
Bugzilla Report 55922.
Other changes:
* Documentation fix for if/unless attributes. PR 55359.
* tar entries with long link names are now handled the same way as
entries with long names.
* Addition of 'skipNonTests' attribute to <junit> and <batchtest>
tasks to allow the tasks to skip classes that don't contain tests.
* <filterset> now supports a nested <propertyset> to specify filters.
Bugzilla Report 55794.
* <xslt>'s params can now be typed.
Bugzilla Report 21525.
* build of Mac OS X pkg installer
Bugzilla Report 55899.
Changes from Ant 1.9.1 TO Ant 1.9.2
Fixed bugs:
* Parsing of zip64 extra fields has become more lenient in order to
be able to read archives created by DotNetZip and maybe other
archivers as well.
* TarInputStream should now properly read GNU longlink entries' names.
Bugzilla Report 55040.
* <java> and <exec> used to be too restrictive when evaluating
whether a given set of options is compatible with spawning the new
Bugzilla Report 55112.
Other changes:
* <javadoc> will now post-process the generated in order to mitigate
the frame injection attack possible in javadocs generated by Oracle
JDKs prior to Java7 Update 25. The vulnerability is known as
There is an option to turn off the post-processing but it is only
recommended you do so if all your builds use a JDK that's not
Bugzilla Report 55132.
Changes from Ant 1.9.0 TO Ant 1.9.1
Changes that could break older environments:
* Users who have their own ProjectHelper implementation will need to change it because the import and include tasks
will now default the targetPrefix to ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX.
Users using the default ProjectHelper2 with ant need not worry about this change done to fix Bugzilla Report 54940.
Fixed bugs:
* Corrected XSLTC error in <junitreport>.
Bugzilla Report 54641.
* Provide more control over Zip64 extensions created by <zip> and
related tasks. In particular no Zip64 extensions will be used at
all by the <jar> task family by default - this is required for jars
to be readably by Java5.
Bugzilla Report 54762.
* Fixed loading of external dependencies in JUnit task.
Bugzilla Report 54835.
* Target rewriting for nested "include" only works when "as" is specified.
See also "Changes that could break older environments"
Bugzilla Report 54940.
Other changes:
* strict attribute added to <signjar>.
Bugzilla Report 54889.
* simplifying Execute.getEnvironmentVariables since we are only running on Java 1.5 or higher now
* Added conditional attributes.
Bugzilla Report 43362
* Recommending to upgrade jsch to 0.1.50, particularly if you are using Java 1.7.
jsch is the library behind the sshexec and scp Ant tasks.
Versions of jsch older than 0.1.50 fail randomly under Java 1.7 with an error message "verify: false"
Changes from Ant 1.8.4 TO Ant 1.9.0
Changes that could break older environments:
* Ant now requires at least Java 1.5 to compile and to run
* FixCRLF used to treat the EOL value ASIS to convert to the system property
line.separator. Specified was that ASIS would leave the EOL characters alone,
the task now really leaves the EOL characters alone. This also implies that
EOL ASIS will not insert a newline even if fixlast is set to true.
Bugzilla report 53036
* The CommandLauncher hierarchy that used to be a set of inner
classes of Execute has been extracted to the package.
* Any FileResource whose represented File has a parent also has a basedir.
* Removing the Perforce Ant tasks replaced by tasks supplied by Perforce Inc.
* Setting the default encoding of StringResource to UTF-8 instead of null
* Upgrade JUnit 4 to JUnit 4.11
Fixed bugs:
* Made VectorSet faster.
Bugzilla Report 53622.
* Incorrect URLs in Ant child POMs.
Bugzilla Report 53617.
* Subclasses of JUnitTask did not correctly find junit.jar.
Bugzilla Report 53571.
* External XML catalog resolver failed to use project basedir when given an
unmentioned relative path like the internal resolver does.
Bugzilla Report 52754.
* Fixed some potential stream leaks.
Bugzilla Reports 52738, 52740, 52742, 52743.
* Updated documentation to fix spelling errors / broken links.
Bugzilla Reports 53215, 53291, 53202
* Unable to override system properties. It was not possible not to override
system properties from the command line (or from a property file).
Bugzilla Report 51792
* <javac> by default fails when run on JDK 8.
Bugzilla Report 53347.
* ExtensionPoint doesn't work with nested import/include
Bugzilla Report 53405.
* <packagemapper> failed to strip the non-matched parts with
Bugzilla Report 53399.
* <expandproperties> filter caused a NullPointerException when input
was empty.
Bugzilla Report 53626.
* <get> now supports HTTP redirects using status code 307.
Bugzilla Report 54374.
* ssh tasks prompt for kerberos username/password under Java 7
Bugzilla Report 53437.
* Zip task on <mappedresources> that excludes certain files by way of the mapper resulted in a NullPointerException
Bugzilla Report 54026
* The ant launcher script should properly detect JAVA_HOME on
MacOS X 10.7
Bugzilla Report 52632
* Depend task does not handle invokeDynamic constant pool entries - java.lang.ClassFormatError: Invalid Constant Pool entry Type 18
Bugzilla Report 54090
* Base64Converter not properly handling bytes with MSB set (not masking byte to int conversion)
Bugzilla Report 54460
* The size resource comparator would return wrong results if file
sizes differed by more than 2 GB.
Bugzilla Report 54623
* Unable to encode properly into UTF-8 when the system property file.encoding is
set to ANSI_X3.4-1968.
Bugzilla Report 54606
* JUnit4 tests marked @Ignore do not appear in XML output
Bugzilla Report 43969
Other changes:
* merged the ZIP package from Commons Compress, it can now read
archives using Zip64 extensions (files and archives bigger that 4GB
and with more that 64k entries).
* a new task <commandlauncher> can be used to configure the
CommandLauncher used by Ant when forking external programs or new
Java VMs.
Bugzilla Report 52706.
* merged the TAR package from Commons Compress, it can now read
archives using POSIX extension headers and STAR extensions.
* merged the BZIP2 package from Commons Compress, it can now
optionally read files that contain multiple streams properly.
* <bunzip2> will now properly expand files created by pbzip2 and
similar tools that create files with multiple bzip2 streams.
* <tar> now supports a new "posix" option for longfile-mode which
will make it create PAX extension headers for long file names. PAX
extension headers are supported by all modern implementations of
tar including GNU tar.
This option should now be used in preference to "warn" or "gnu" as
it is more portable. For backwards compatibility reasons "warn"
will still create "gnu" extensions rather than "posix" extensions.
* The ProjectHelper class now exposes a method to be used by third party
implementations to properly resolve the binding between target extensions
and extension points.
Bugzilla Report 53549.
* Make extension point bindable to imported prefixed targets
Bugzilla Report 53550.
* Add the possibility to register a custom command line argument processor.
See and manual/argumentprocessor.html
* add the possibility to suppress stdout in the sshexec task.
Bugzilla Report 50270.
* add an encoding attribute to the contains selector.
This will be useful to use the contains selector if the encoding of the VM is different from the encoding
of the files being selected.
* support for GNU Classpath.
Bugzilla report 54760.
Changes from Ant 1.8.3 TO Ant 1.8.4
Fixed bugs:
* Ported libbzip2's fallback sort algorithm to CBZip2OutputStream to
speed up compression in certain edge cases. Merge from Commons
Using specially crafted inputs this can be used as a denial of
service attack.
Changes from Ant 1.8.2 TO Ant 1.8.3
Changes that could break older environments:
* The Enumeration returned by AntClassLoader#getResources used to
return null in nextElement after hasNextElement would return false.
It has been changed to throw a NoSuchElementException instead so
that it now adheres to the contract of java.util.Enumeration.
Bugzilla Report 51579.
Fixed bugs:
* Removed buggy duplicate JAR list in RPM mode.
Bugzilla Report 52556.
* Launcher fixed to pass the right class loader parent.
Bugzilla Report 48633.
* <junitreport> mishandled ${line.separator}.
Bugzilla Report 51049.
* <junitreport> did not work in embedded environments on JDK 7.
Nor did <xslt> when using Xalan redirects.
Bugzilla Report 51668, 52382.
* Encoding of unicode escape sequences by the property file task
Bugzilla Report 50515.
* The code that implicitly sets the -source switch if only -target
has been specified in <javac> was broken for Java 5 and 6.
Bugzilla Report 50578.
* MailLogger ignore the Maillogger.starttls.enable property.
Bugzilla Report 50668.
* Delete task example does not work
Bugzilla Report 50816.
* <splash>'s proxy handling has been delegated to <setproxy>
internally so the two tasks are consistent. <splash>'s way of not
setting a proxy caused problems with other Java libraries.
Bugzilla Report 50888.
* Include task breaks dependencies or extension-points for multiple
Bugzilla Report 50866.
* Read on hangs for forked java task.
Bugzilla Report 50960.
* FileResource specified using basedir/name attributes was non-functional.
* Resource collection implementation of mapped PropertySet returned
unusable resources.
* The hasmethod condition failed with a NullPointerException when
ignoresystemclasses is true and Ant tried to load a "restricted
class" - i.e. a class that the Java VM will only accept when loaded
via the bootclassloader (a java.* class).
It will now fail with a more useful error message.
Bugzilla Report 51035.
* Exec task may mix the stderr and stdout output while logging it
Bugzilla Report 50507.
* Missing space between "finished" and timestamp in task/target
finish message from ProfileLogger.
Bugzilla Report 51109.
* Redirecting the output of a java, exec or apply task could print in the
error output stream some "Pipe broken" errors.
Bugzilla Report 48789.
* ZipFile failed to clean up some resources which could lead to
OutOfMemoryException while unzipping large archives.
A similar problem in ZipArchiveOutputStream has been fixed as well.
Bugzilla Report 42696.
* quiet attribute added to the copy and move tasks, to be used together
with failonerror=false, so warnings won't get logged
Bugzilla Report 48789.
* was closed and not readable anymore by the DefaultInputHandler
when Ant is used via its Java API.
Bugzilla Report 51161
* <sync> only supported a single non-fileset resource collection even
though the manual said it could be multiple.
* <sync> didn't work properly when working on resource collections.
Bugzilla Report 51462.
* <augment> cause a NullPointerException if it was used in a target
that was invoked by multiple targets from the command line.
Bugzilla Report 50894.
* The ZipFile class could read past the start of the file if the
given file is not a ZIP archive and it is smaller than the size of
a ZIP "end of central directory record".
* <javac> would create the empty package-info.class file in the wrong
directory if no destdir was specified. Note it may still pick the
wrong directory if you specify more than one source directory but
no destDir. It is highly recommended that you always explicitly
specify the destDir attribute.
Bugzilla Report 51947.
* packagemapper now honors the handleDirSep attribute.
Bugzilla Report 51086.
* the attributes of macrodef tasks had their values run through
property expansion twice. Still true by default, but can be disabled.
Bugzilla Report 42046.
* jvc doesn't like it if source file names in argument files are
Bugzilla Report 31667.
* ZipFile didn't work properly for archives using unicode extra
fields rather than UTF-8 filenames and the EFS-Flag.
* Access to DirectoryScanner's default excludes wasn't synchronized.
Bugzilla Report 52188.
* When a Project instance was created by a custom tasks its
createTask method didn't work.
Bugzilla Report 50788.
Other changes:
* -f/-file/-buildfile accepts a directory containing build.xml.
* The <javacc>, <jjtree> and <jjdoc> now support a new maxmemory
Bugzilla Report 50513.
* the documented inputstring attribute of sshexec has been
implemented and the actually existing attribute inputproperty
Bugzilla Report 50576.
* The concat task now permits the name of its exposed resource
by means of its 'resourcename' attribute.
* The expandproperties filter now accepts a nested propertyset
which, if specified, provides the properties for expansion.
Bugzilla Report 51044.
* <junit filtertrace="true"/> will no longer filter out the very
first line of the stacktrace containing the original exception
message even if it matches one of the filter expressions.
* Upgraded to Apache AntUnit 1.2
* Provide read access to Mkdir.dir. Bugzilla Report 51684.
* <delete> and <move> have a new attribute performGCOnFailedDelete
that may - when set to true - help resolve some problems with
deleting empty directories on NFS shares.
Bugzilla Report 45786.
* <loadfile> and <loadresource> used to log at level INFO to signal a
property hasn't been set when the resource was empty even if the
quiet attribute was set to true. They will now use VERBOSE
Bugzilla Report 52107.
* <javac> has a new attribute createMissingPackageInfoClass that can
be set to false to prevent Ant from creating empty dummy classes
used for up-to-date-ness checks.
Bugzilla Report 52096.
* URLResources#isExists has become less noisy.
Bugzilla Report 51829.
* The <retry> task has a new optional attribute retryDelay that can
be used to make the task sleep between retry attempts.
Bugzilla Report 52076.
* <signjar> has new attributes that control the signature and digest
Bugzilla Report 52344.
* Initial support for Java 8.
* <sshexec> can optionally create a pseudo terminal (like ssh -t)
Bugzilla Report 52554.
Changes from Ant 1.8.1 TO Ant 1.8.2
Changes that could break older environments:
* Prior to Ant 1.8.0 the <copy> task and several other tasks would
overwrite read-only destination files. Starting with 1.8.0 they
would only do so under special circumstances. Ant 1.8.2 now
consistently won't replace a read-only file by default. The same is
true for a number of other tasks.
The <copy>, <move> and <echo> tasks now have a new force attribute
and <concat> has a new forceReadonly attribute that can be used to
make the task overwrite read-only destinations.
Bugzilla Report 49261.
* Removed ant-nodeps.jar; it is now merged into ant.jar.
* DOMElementWriter#encode used to employ special code before encoding
ampersands so that &#123; remained &#123; rather than being turned
into &amp;#123;. This is no longer the case, ampersands will now
be encoded unconditionally.
Also DOMElementWriter#encodeData will treat CDATA sections containing a
literal "]]>" sequence different now - it will split the CDATA
section between the second "]" and ">" and create two sections.
This affects <echoxml> task as well as the XML logger or JUnit
formatter where ampersands will now always get encoded.
In addition DOMElementWriter will now replace the characters \t, \r
and \n in attribute values by entity references.
Bugzilla Report 49404.
* The list elements returned by ProjectHelper#getExtensionStack are
now String arrays of length 3 rather than 2 in order to support the
onMissingExtensionPoint attribute.
Bugzilla Report 49473.
* When using <property file="..." prefix="..."/> properties defined
inside the same file will only get used in expansions if the ${}
reference uses the same prefix. This is different from Ant 1.8.1
but is the same behavior Ant 1.8.0 and earlier exhibited.
A new attribute prefixValues can be used to re-enable the behavior
of Ant 1.8.1.
Bugzilla Report 49373.
* The files and directories used by Git, Mercurial and Bazaar to
store their information are now excluded by the defaultexcludes.
Bugzilla Report 49624.
* The <junit> task no longer generates TestListener events - which
have been introduced in ant 1.7.0 - by default. The task has a new
attribute enableTestListenerEvents and a new "magic" property
ant.junit.enabletestlistenerevents has been added that can be used
to reinstate the old behavior.
Fixed bugs:
* hostinfo now prefers addresses with a hostname over addresses without
a hostname, provided the addresses have the same scope.
For local lookup, no IP address will be put in NAME / DOMAIN anymore.
For remote lookup, if a host name was provided and only an IP address is
found, the IP address will no longer overwrite the host name provided to the
Bugzilla Report 49513
* mmap-based file copy problems under JDK 1.4 on Linux.
Bugzilla Report 49430.
* The Sun JVM tries to mmap the entire file during a copy.
For large files this is not feasible.
We now explicitly request to copy at most 16 MiB per request.
Bugzilla Report 49326.
* should return unsigned values
Bugzilla Report 49279.
* The MIME mailer ignored the port parameter when using SSL.
Bugzilla Report 49267.
* <xslt> ignored the classpath when using the default TraX processor.
Bugzilla Report 49271.
* <checksum>'s totalproperty only worked reliably if the same file
name didn't occur inside more than one directory.
Bugzilla Report 36748.
* <ftp> could fail to download files from remote subdirectories under
certain circumstances.
Bugzilla Report 49296.
* <junit> will now produce better diagnostics when it fails to delete
a temporary file.
Bugzilla Report 49419.
* Ant would often scan directories even though there were known to
only hold excluded files when evaluating filesets. This never
resulted in wrong results but degraded performance of the scan
Bugzilla Report 49420.
* <javac> failed for long command lines on OS/2.
Bugzilla Report 49425.
* <junitreport> did not handle encodings well for stdout/stderr.
Bugzilla Report 49418.
* <junit> could issue a warning about multiple versions of Ant on the
CLASSPATH if two CLASSPATH entries differed in case on a
case-insensitive file system.
Bugzilla Report 49041.
* The <restrict> resource collection was checking every resource even if
we actually just want the first one, like in the example of use of
resourcelist in the documentation (getting the first available resource
from a mirror list).
* A race condition could lead to build failures if multiple <mkdir>
tasks were trying to create the same directory.
Bugzilla Report 49572.
* the toString() method of the Resources class - and thus any
${toString:} expansion of a reference to a <resources> element -
didn't iterate over its nested elements if it hadn't done so prior
to the toString invocation already.
Bugzilla Report 49588.
* <apply> in parallel mode didn't work together with a nested
<redirector> if maxparallel was <= 0 (the default) or no source
files matched.
Bugzilla Report 49594.
* <jar filesetmanifest="merge"> didn't work for manifests added via
<zipfileset>s that used the prefix or fullpath attributes.
Bugzilla Report 49605.
* <tempfile createfile="true"> would cause an error unless the prefix
attribute has been specified.
Bugzilla Report 49755.
* If forked, after finished <java> was still reading the input stream
for a bunch of characters, then stealing them from a following <input>.
Bugzilla Report 49119.
* Ant could be leaking threads for each forked process (started by
<exec>, <apply>, <java> or similar tasks) that didn't receive input
from a resource or string explicitly.
Bugzilla Report 49587.
* Project#setDefault threw an exception when null was passed in as
argument, even though the Javadoc says null is a valid value.
Bugzilla Report 49803.
* would swallow the first argument if CLASSPATH wasn't set.
Bugzilla Report 49963.
* <taskdef> failed to load resources from jar files contained in a
directory that has a "!" in its name.
Bugzilla Report 50007.
* ant.bat exit strategy improvements and issues
make the exit codes work in environments where 4NT or MKS are installed
Bugzilla Report 41039.
* <signjar> would fail if used via its Java API and the File passed
into the setJar method was not "normalized" (i.e. contained ".."
Bugzilla Report 50081.
* <delete> ignored <fileset>'s errorOnMissingDir attribute
Bugzilla Report 50124.
* <symlink> failed to close files when reading a list of symbolic
links from a properties file.
Bugzilla Report 50136.
* <parallel> could allow tasks to start executing even if a task
scheduled to run before them timed out.
Bugzilla Report 49527.
* If a <junit> batch with multiple tests times out Ant logs a message
about a test named Batch-With-Multiple-Tests since 1.8.0 but the
logic that determined the Java package of this pseudo-test has been
Bugzilla Report 45227.
* <propertyfile> didn't preserve the original linefeed style when
updating a file.
Bugzilla Report 50049.
* <zip>'s whenEmpty behavior never consulted the non-fileset
resources so the task could fail even though resources have been
provided using non-fileset resource collections.
Bugzilla Issue 50115.
* ftp chmod could throw a NPE.
Bugzilla report 50217.
* The project help (-p option in the command line) will now print
the dependencies of the targets in debug mode (-d on the command
Other changes:
* <concat>'s force attribute has been deprecated in favor of a new
overwrite attribute that is consistent with <copy>'s attribute
* You can now specify a list of methods to run in a JUnit test case.
Bugzilla Report 34748.
* properties in files read because of the -propertyfile command line
option will now get resolved against other properties that are
defined before the project starts executing (those from the same or
earlier -propertfiles or defined via the -D option).
Bugzilla Report 18732.
* <pathelement>s can now contain wildcards in order to use wildcard
CLASSPATH entries introduced with Java6.
The wildcards are not expanded or even evaluated by Ant and will be
used literally. The resulting path may be unusable as a CLASSPATH
for Java versions prior to Java6 and likely doesn't mean anything
when used in any other way than a CLASSPATH for a forked Java VM.
Bugzilla Report 46842.
* A new attribute allows targets to deal with nonexistent extension
points, i.e. they can extend an extension-point if it has been
defined or silently work as plain targets if it hasn't. This is
useful for targets that get included/imported in different
scenarios where a given extension-point may or may not exist.
Bugzilla Report 49473.
* Ant now logs a warning message if it fails to change the file
modification time in for example when using <touch> or preserving
timestamps in various tasks.
Bugzilla Report 49485.
* ProjectHelpers can now be installed dynamically via the <projecthelper>
Ant task.
* <import> is now able to switch to the proper ProjectHelper to parse
the imported resource. This means that several kinds of different build
files can import each other.
* <copy tofile=""> now also works for non-filesystem resources.
Bugzilla Report 49756.
* The <linecontainsregexp> filter now supports a casesensitive
* The <containsregexp> selector now supports casesensitive, multiline
and singleline attributes.
Bugzilla Report 49764.
* A new <cutdirsmapper> can be used like wget's --cut-dirs option to
strip leading directories from file names.
* <javah> now supports the GNU project's gcjh compiler.
Bugzilla Report 50149.
* <checksum> supports additional views of a file's path as elements
for a custom pattern.
Bugzilla Report 50114.
* JUnit XMLResultAggregator logs the stack trace of caught IO exceptions
in verbose runs.
Bugzilla Report 48836.
* StringUtils.parseHumanSizes() should turn parse failures into
Bugzilla Report 48835.
* New task <bindtargets> to make a list of targets bound to some
specified extension point.
* Initial support for OpenJDK7 has been added.
* Ant now uses rather than
java.util.ServiceLocator to detect whether the environment is a
Java 1.6 system. This means releases of gcj/gij at the time of
this release of Ant are detected as Java 1.5 and not 1.6.
Bugzilla Report 50256.
* It is now possible to write a compiler adapter for <javac> that
compiles sources with extensions other than .java (but that still
compile to .class files).
Bugzilla Report 48829.
* The performance of VectorSet#add(Object) has been improved which
should also benefit any operation that scans directories in Ant.
Bugzilla Report 50200.
Changes from Ant 1.8.0 TO Ant 1.8.1
Changes that could break older environments:
* ant-trax.jar is no longer produced since TrAX is included in JDK 1.4+.
* Ant no longer ships with Apache Xerces-J or the XML APIs but relies
on the Java runtime to provide a parser and matching API versions.
* The stylebook ant task and the ant-stylebook.jar are removed.
Fixed bugs:
* Tasks that iterate over task or type definitions, references or
targets now iterate over copies instead of the live maps to avoid
ConcurrentModificationExceptions if another thread changes the
Bugzilla Report 48310.
* The filesmatch condition threw a NullPointerException when
comparing text files and the second file contained fewer lines than
the first one.
Bugzilla Report 48715.
* Regression: The <ear> task would allow multiple
META-INF/application.xml files to be added.
Bugzilla Report 6836.
* VectorSet#remove(Object) would fail if the size of the vector
equaled its capacity.
* Regression : ant -diagnostics was returning with exit code 1
Bugzilla Report 48782
* Fix for exec task sometimes inserts extraneous newlines
Bugzilla Report 48746
* SymlinkTest#testSymbolicLinkUtilsMethods failing on MacOS
Bugzilla Report 48785.
* If <concat>'s first resourcecollection child is a <resources>,
any subsequently added child resourcecollection joins the first.
Bugzilla Report 48816.
* <get> with an invalid URL could trigger an NPE in some JVMs.
Bugzilla Report 48833
* Broken Pipe issue under Ubuntu Linux
Bugzilla Report 48789
* Properties wrongly read from file or not update during read
Bugzilla Report 48768
* AntClassLoader in Ant 1.8.0 has been considerably slower than in
Bugzilla Report 48853
* ANT_CMD_LINE_ARGS are rippling through lower level Ant usage
Bugzilla Report 48876
* email : IO error sending mail with plain mimetype
Bugzilla Report 48932
* the script failed to create a proper cache of
target if "ant -p" failed.
Bugzilla Report 48980
* <rmic>'s sourcebase attribute was broken.
Bugzilla Report 48970
* <copy>'s failonerror didn't work as expected when copying a single
element resource collection to a file.
Bugzilla Report 49070
* <get> no longer followed redirects if the redirect URL was relative
and not an absolute URL.
Bugzilla Report 48972
* fixed a performance degradation in the code that expands property
Bugzilla Reports 48961 and 49079
* <jar filesetmanifest="merge"> was broken on Windows.
Bugzilla Report 49090
* <symlink> delete failed if the link attribute was a relative path
to a link inside the current directory without a leading ".".
Bugzilla Report 49137
* <telnet> and <rexec> failed to find the expected strings when
waiting for responses and thus always failed.
Bugzilla Report 49173
Other changes:
* Project provides new get methods that return copies instead of the
live maps of task and type definitions, references and targets.
* Ant is now more lenient with ZIP extra fields and will be able to
read archives that it failed to read in earlier versions.
Bugzilla Report 48781.
* The <zip> family of tasks has been sped up for bigger archives.
Bugzilla Report 48755.
* Add removeKeepExtension option to NetRexxC task.
Bugzilla Report 48788.
* Add prefix attribute to loadproperties task.
* Add resource attribute to length task.
* PropertyResource will effectively proxy another Resource if ${name}
evaluates to a Resource object.
* Added forcestring attribute to equals condition to force evaluation
of Object args as strings; previously only API-level usage of the
equals condition allowed Object args, but Ant 1.8.x+ property
evaluation may yield values of any type.
* BuildFileTest.assertPropertyUnset() fails with a slightly more
meaningful error message
Bugzilla Report 48834
* <junit> will now throw an exception if a test name is empty. This
used to manifest itself in unrelated errors like
Bugzilla Report 43586.
* A change that made <exec> more reliable on Windows (Bugzilla Report
5003) strongly impacts the performance for commands that execute
quickly, like attrib. Basically no single execution of a command
could take less than a second on Windows.
A few timeouts have been tweaked to allow these commands to finish
more quickly but still they will take longer than they did with Ant
Bugzilla Report 48734.
* Added SimpleBigProjectLogger, intermediate between NoBannerLogger and
* <mappedresources> supports new attributes enablemultiplemappings
and cache.
* Added the augment task to manipulate existing references via Ant's basic
introspection mechanisms.
Changes from Ant 1.8.0RC1 TO Ant 1.8.0
Changes that could break older environments:
* the appendtolines filter has been renamed to suffixlines.
Fixed bugs:
* stack traces were not reported at all by <junit/>
when filtertrace="on", which is the default.
* ant.bat can now also process the -noclasspath switch when it is
the first switch on a command line.
Bugzilla Report 48186.
* <fixcrlf> now tries to delete the created temporary files earlier.
Bugzilla Report 48506.
* the implementation of <zip> had been changed in a way that broke
the jarjar links task and protentially other third-party subclasses
as well.
Bugzilla Report 48541.
* <scp> task didn't report build file location when a remote operation failed
Bugzilla Report 48578.
* <propertyfile> would add the same comment and a date line each time
it updated an existing property file.
Bugzilla Report 48558.
* <sound> didn't work properly in recent Java VMs.
Bugzilla Report 48637.
Other changes:
Changes from Ant 1.7.1 TO Ant 1.8.0RC1
Changes that could break older environments:
* if and unless attributes (on <target> as well as various tasks and other
elements) have long permitted ${property} interpolation. Now, if the result
evaluates to "true" or "false" (or "yes", "no", "on", "off"), that boolean
value will be used; otherwise the traditional behavior of treating the value
as a property name (defined ~ true, undefined ~ false) is used. Existing
scripts could be broken if they perversely defined a property named "false"
and expected if="false" to be true, or used if="true" expecting this to be
triggered only if a property named "true" were defined.
* Ant now requires Java 1.4 or later.
* Improved handling of InterruptException (lets suppose someone/thing
is trying to kill the thread when we receive an
InterruptException), when an InterruptException is received, we do
not wait anymore in a while loop till the end time has been
Bugzilla Report 42924.
* Refactor PropertyHelper and introspection APIs to make extension
more granular and support setting task/type attribute values to
objects decoded by custom PropertyEvaluator delegates. Also add
<propertyhelper> task for registering delegates and/or replacing
the registered PropertyHelper instance.
Bugzilla Report 42736.
* Added a restricted form of typedef called <componentdef>. This
allows definition of elements that can only be within tasks or
types. This method is now used to define conditions, selectors,
comparators and filterreaders. This means that tasks may now have
nested conditions just by implementing the Condition interface,
rather than extending ConditionBase. It also means that the use of
namespaces for some of the selectors introduced in Ant 1.7.0 is no
longer necessary. Implementing this means that the DynamicElement
work-around introduced in Ant 1.7.0 has been removed.
Bugzilla Report 40511.
* In the <touch> task when a <mapper> is used, the millis and
datetime attributes now override the time of the source resource if
Bugzilla Report 43235.
* Remove fall-back mechanism for references that are not resolved
during normal runtime execution.
* FileUtils.createTempFile now actually creates the file.
The TempFile task still does not create the file by default, can be
instructed to do so however using a new parameter.
Bugzilla Report 33969.
* A lock in Project ensured that a BuildListener's messageLogged
method was only ever executed by a single thread at a time, while
all other methods could be invoked by multiple threads
simultaniously (while within <parallel>, for example). This lock
is no longer in place, messageLogged should be made thread-safe
* <sql>'s onError="stop" no longer fails the build if an error
occurs, this is the main difference between stop and error and
matches what the documentation implied.
Bugzilla Report 24668.
* Ant's configuration introspection mechanisms have been modified to prefer
Resource and FileProvider attributes to plain attributes;
however the configuration-from-String behavior remains equivalent, rendering
a FileResource.
* CBZip2InputStream will now throw an IOException if
passed in a null or empty InputStream to read from.
Bugzilla Reports 32200.
* <unzip> will now fail when trying to extract certain broken
archives that would have been silently ignored in earlier version.
Bugzilla Report 35000.
* Ant's <zip> family of tasks tries to preserve the existing Unix
permissions when updating archives or copying entries from one
archive to another.
Since not all archiving tools support storing Unix permissions in
the same way that is used by Ant, sometimes the permissions read by
Ant seem to be 0, which means nobody is allowed to do anything to
the file or directory.
If Ant now encounters a permission set of 0 it will assume that
this is not the intended value and instead apply its own default
values. Ant used to create entries with 0 permissions itself.
The <zip> family of tasks has a new attribute preserve0permissions
that can be set to restore the old behavior.
Bugzilla Report 42122.
* If a batch containing multiple JUnit tests running inside a forked
Java VM caused the VM to crash (or caused a timeout), the
formatters would receive an error message for the last test in the
Ant will now pass in a test with the name "Batch-With-Multiple-Tests"
instead - this is supposed to show more clearly that the last test
may not have started at all.
Bugzilla Report 45227.
* If the number of minutes a build takes is bigger then 1000 Ant will
no longer print a thousands separator in the "elapsed time"
message. It used to be the thousands separator of the current
Bugzilla Report 44659.
* <symlink action="delete"> used to fail if the link was broken (i.e.
pointing to a file or directory that no longer existed). It will now
silently try to remove the link.
Bugzilla Report 41285.
* <delete file="..."> used to log a warning and not delete broken
symbolic links. <delete dir="..."/> didn't even log a warning.
The task will now try to delete them in both cases.
Bugzilla Report 41285.
* if the dir attribute of a <fileset> points to a symbolic link and
followsymlinks is set to false, the fileset will no longer be
scanned and always seem empty.
Bugzilla Report 45741.
* the .NET tasks that have been deprecated since Ant 1.7.0 have been
removed, please use the stand-alone Antlib you can find at
* the logic of closing streams connected to forked processes (read
the input and output of <exec> and friends) has been changed to
deal with cases where child processes of the forked processes live
longer than their parents and keep Ant from exiting.
It is unlikely but possible that the changed logic breaks stream
handling on certain Java VMs.
Bugzilla issue 5003.
* <checksum>'s totalproperty was platform dependent because it relied
on It has now been made platform
independent, which means that totalPropery values obtained on
Windows (and other systems where the sort order of File is not case
sensitive) can be different from the values obtained with earlier
versions of Ant.
Bugzilla Report 36748.
* globmapper didn't work properly if the "to" or "from" patterns
didn't contain a "*". In particular it implicitly added a * to the
end of the pattern(s). This is no longer the case. If you relied
on this behavior you will now need to explicitly specify the
trailing "*".
Bugzilla Report 46506.
* <copy> silently ignored missing resources even with
failOnError="true". If your build tries to copy non-existent
resources and you relied on this behavior you must now explicitly
set failOnError to false.
Bugzilla Report 47362.
* Ant now prefers the java.runtime.version system property over
java.vm.version for the Created-By Manifest attribute.
Bugzilla Report 47632.
* The <image> task now supports a nested mapper. In order to
implement this, the Java API of the task had to change so any
custom subclass overriding the processFile method will need to
adapt (by overriding the new two-arg processFile method).
Bugzilla Report 23243.
* A new property syntax can be used to set attributes from
references: ${ant.ref:some-reference}
In most cases this will yield the exact same result as
${toString:some-reference} - only when an attribute setter method
accepts an object type other than string and the project's
reference is an Object of matching type the new syntax will pass in
that object.
If your build file already contains properties whose name starts
with "ant.ref:" there is a potential for collision. If your
property has been set, normal property expansion will take
precedence over the new syntax. If the property has not been set
and a reference with the postfix of your property name exists
(i.e. in a very unlikely event) then the new syntax would yield a
different result (an expanded property) than Ant 1.7.1 did.
* A ProjectHelper implementation can now provide the default build file
name it is expecting, and can specify if they can support a specific build
file. So Ant is now capable of supporting several ProjectHelper
implementations, deciding on which to use depending of the input build file.
* Mapper-aware selectors (depends, different, present) now accept typedef'd
Fixed bugs:
* The default logger was failing to print complete stack traces for
exceptions other than BuildException when inside <ant> or
<antcall>, thus omitting often important diagnostic
Bugzilla 43398 (continued).
* Better handling of package-info.class.
Bugzilla Report 43114.
* RPM task needed an inserted space between the define and the value.
Bugzilla Report 46659.
* Got rid of deadlock between in, out and err in the Redirector.
Bugzilla Report 44544.
* Caused by AssertionError no longer filtered.
Bugzilla Report 45631.
* <zip> would sometimes recreate JARs unnecessarily.
Bugzilla Report 45902.
* <symlink> task couldn't overwrite existing symlinks that pointed to
nonexistent files
Bugzilla Report 38199.
* <symlink> task couldn't overwrite files that were in the way of the symlink.
Bugzilla Report 43426.
* <symlink> task failonerror="false" does not stop build from failing
when 'ln' command returns non-zero.
Bugzilla Report 43624
* <touch> task couldn't differentiate between "no resources
specified" and "no resources matched."
Bugzilla Report 43799.
* ManifestClassPath failed when a relative path would traverse the
file system root.
Bugzilla Report 44499.
* <globmapper> had an indexoutofbounds when the prefix and postfix
Bugzilla Report 44731.
* <typedef> and <taskdef> failed to accept file names with #
characters in them.
Bugzilla Report 45190
* A deadlock could occur if a BuildListener tried to access an Ant property
within messageLogged while a different thread also accessed one.
Bugzilla Report 45194
* Handle null result of system getProperty() in CommandlineJava.
Similar to Bugzilla Report 42334.
* Length task did not process nonexistent Resources even though these might
conceivably still carry file length information.
Bugzilla Report 45271.
* <javac>'s includeJavaRuntime="false" should work for gcj now. Note
that you may need to set includeAntRuntime to false in order to
have full control.
Bugzilla Report 34638.
* <sql> would fail if the executed statement didn't return a result
set with some JDBC driver that dissalow Statement.getResultSet to
be called in such a situation.
Bugzilla Report 36265
* if the executed statement in <sql> returned a result set and an
update count, the count would be lost.
* if an executed statement in <sql> mixes update count and result set
parts, some result sets wouldn't get printed.
Bugzilla Report 32168.
* XmlLogger could lose messages if <parallel> is used.
Bugzilla Report 25734.
* <scp> creates remoteToDir if it doesn't exist.
Bugzilla Report 42781
* CBZip2OutputStream threw an exception if it was closed prior to
writing anything.
Bugzilla Reports 32200, 45836
* The IPlanetDeploymentTool didn't use the configured DTD locations.
Bugzilla Report 31876.
* The ant shell script printed a warning under Cygwin if JAVA_HOME
was not set.
Bugzilla Report 45245.
* <filterset> sometimes incorrectly flagged infinite recursions of
filter tokens
Bugzilla Report 44226.
* failures were treated as errors in forked JUnit tests when JUnit 4
was used.
Bugzilla Report 43892.
* <jar> and <manifest> disallowed manifest attributes whose name
contained the character '8'.
Bugzilla Report 45675.
* BigProjectLogger would set the project's basedir to the current
working directory.
Bugzilla Report 45607.
* only <formatter>s that logged to a file were notified if forked VM
crashed or a timeout occurred in <junit>.
Bugzilla Report 37312.
* ant -v -version would print the version information twice.
Bugzilla Report 45695.
* when nested into builds that have been invoked by <ant> tasks
<subant> might set the wrong basedir on the called projects.
Bugzilla Report 30569.
* If the message of the failed assertion of a forked JUnit test
contained line feeds some excess output ended up in Ant's log.
Bugzilla Report 45411.
* <symlink action="delete"> failed to delete a link that pointed to
a parent directory.
Bugzilla Report 45743.
* <symlink action="delete"> failed if ant lacked permission to rename
the link's target.
Bugzilla Report 41525.
* when checking whether a jar is signed, <signjar> ignored the
sigfile attribute.
Bugzilla Report 44805.
* When using JavaMail all <mail> tasks used the same mail host
regardless of their configuration.
Bugzilla Report 37970.
* <signjar> and <issigned> didn't handle aliases with characters other
than numbers, letters, hyphen or underscore properly.
Bugzilla Report 45820.
* <filterset> could miss multi-character begin tokens in some cases.
Bugzilla Report 45094.
* <depend> didn't close JARs that were part of the classpath.
Bugzilla Report 45955.
* in some cases <depend> would delete class files even if it didn't
find the corresponding source files.
Bugzilla Report 45916.
* <javadoc> failed if the nested <bottom> or <head> contained line
Bugzilla Report 43342.
* encoding="auto" has been broken in <mail> since Ant 1.7.0 and only
worked if JavaMail was available.
Bugzilla Report 42389.
* MailLogger could cause a NullPointerException.
Bugzilla Report 44009.
* <junit> didn't recognize failed assertions as failures if they
caused subclasses of AssertionError to be thrown (like
org.junit.ComparisonFailure that is thrown when assertEquals
Bugzilla Report 45028.
* the Unix "ant" wrapper script failed to protect wildcards in
command line arguments in some cases.
Bugzilla Report 31601.
* <cvstagdiff> crippled file names and could miss some entries if
multiple modules have been specified.
Bugzilla Report 35301.
* Tasks with a "public void add(SomeType)" method failed to work as
TaskContainers at the same time.
Bugzilla Report 41647.
* Tasks that implementes DynamicElemen or DynamicElementNS failed to
work as TaskContainers at the same time.
Bugzilla Report 41647.
* combining SSL and authentication in <mail> and MailLogger failed in
some setups.
Bugzilla Report 46063.
* if an error occurs while logging the buildFinished event, the
original error is now logged to System.err.
Bugzilla Report 25086.
* <copy> failed with a NullPointerException when copying a resource
without a name. It will now fail with a meaningful error message.
Bugzilla Report 39960.
* <xslt> now uses the configured classpath to load the factory (when
using TraX) before falling back to Ant's own classpath.
Bugzilla Report 46172.
* <dependset> complained about files being modified in the future if
they had been just very recently (within Ant's assumed granularity
of the file system).
Bugzilla Report 43665.
* <sshexec> didn't store the output in outputproperty if the remote
command failed.
Bugzilla Report 46340.
* DirectoryScanner's slow-scanning algorithm that is used when you
ask for excluded or not-included files and/or directories could
miss some files and directories in the presence of recursive
exclude patterns.
* <sort> resource collection kept only one of entries deemed equal by
the chosen Comparator.
Bugzilla Report 46527.
* the ZipFile class used by <unzip> and others could leave the
archive open (making it undeletable on Windows as long as the java
VM was running) for files with an unexpected internal structure.
Bugzilla Report 46559.
* The zip package now supports the extra fields invented by InfoZIP
in order to store Unicode file names and comments.
* The zip package detects the encoding bit set by more modern
archivers when they write UTF-8 filenames and optionally sets it
when writing zips or jars.
Bugzilla Report 45548
* <sync> could run into a NullPointerException when faced with broken
symbolic links.
Bugzilla Report 46747.
* The ant shell script should now support MSYS/MinGW as well.
Bugzilla Report 46936.
* <signjar> has a new force attribute that allows re-signing of jars
that are already signed.
Bugzilla Report 46891.
* <sshexec> now again honors failonerror in the face of connection
Bugzilla Report 46829.
* The <replacetokens> filter threw an exception if the stream to
filter ended with a begin token.
Bugzilla Report 47306.
* <scriptmapper>, <scriptfilter> and <scriptcondition> didn't support
the setbeans attribute.
Bugzilla Report 47336.
* <loadproperties>' encoding attribute didn't work.
Bugzilla Report 47382.
* Ant created tar archives could contain random bytes at the end
which confused some untar implementations.
Bugzilla Report 47421.
* various places where unchecked PrintWriters could hide exceptions
have been revisited to now check the error status or not use a
PrintWriter at all.
Bugzilla Report 43537.
* filesetmanifest="mergewithoutmain" in <jar> didn't treat inline
manifests as expected.
Bugzilla Report 29731.
* <record> didn't work properly with nested builds.
Bugzilla Report 41368.
* <jar> with filesetmanifest different from skip didn't work if the
update attribute has been set to true.
Bugzilla Report 30751.
* The default stylesheets for <junitreport> failed to properly escape
XML content in exception stack traces.
Bugzilla Report 39492.
* AntClassLoader didn't set the proper CodeSource for loaded classes.
Bugzilla Report 20174.
* AntClassLoader.getResourceAsStream would return streams to
resources it didn't return with getResource and to classes it
failed to load.
Bugzilla Report 44103.
* Logging exceptions without a message would cause a
Bugzilla Report 47623.
* WeblogicDeploymentTool could fail on platforms with a file
separator other than "/".
Bugzilla Report 35649.
* The update attribute of the modified selector was ignored.
Bugzilla Report 32597.
* <manifest> and <jar> can now merge Class-Path attributes from
multiple sources and optionally flatten them into a single
The default behaviour still is to keep multiple Class-Path
attributes if they have been specified and to only include the
attributes of the last merged manifest.
Bugzilla Report 39655.
* <delete> didn't work correctly with a <modified> selector because
it was scanning the same filesets more than once.
Bugzilla Report 43574.
* when using custom filterreaders with the <filterreader classname="">
syntax Ant could leak memory.
The problem didn't occur when using <typedef> or <componentdef> to
define the filterreader which is the recommended approach.
Bugzilla Report 45439.
* Ant didn't set the proper "magic" value for tar entries containing
long file names in GNU longfile mode.
Bugzilla Report 47653.
* The tar task failed to recognize that the archive had to be
(re-)created in some cases where the sources are filesystem based
resources but not filesets.
Bugzilla Report 48035.
* <sshexec>'s outputproperty was prefixed by the executed command
when the command attribute has been used, breaking backwards
compatibility to Ant 1.7.0.
Bugzilla Report 48040.
* different task instances of the same <scriptdef>ed tasks could
overwrite each others attributes/nested elements.
Bugzilla Report 41602.
* The Hashvalue algortihm implementation of the modified task could
fail to read the file(s) completely.
Bugzilla Report 48313.
Other changes:
* The get task now also follows redirects from http to https
Bugzilla Report 47433
* A HostInfo task was added performing information on hosts, including info on
the host ant is running on.
Bugzilla Reports 45861 and 31164.
* There is now a FileProvider interface for resources that act as a source
of filenames. This should be used by tasks that require resources
to provide filenames, rather than require that all resources
are instances or subclasses of FileResource.
Bugzilla Report 43348
* There is now a URLProvider interface for resources that act as a
source of URLs. This should be used by tasks that require resources
to provide URLs, rather than require that all resources are
instances or subclasses of URLResource.
* Fixcrlf now gives better error messages on bad directory attributes.
Bugzilla Report 43936
* a new property ant.project.default-target holds the value of the
current <project>'s default attribute.
* a new property ant.project.invoked-targets holds a comma separated
list of the targets that have been specified on the command line
(the IDE, an <ant> task ...) when invoking the current project.
* The <type> resource selector has had an "any" type added for better
* Ant should detect the OS as both a Mac and a Unix system when
running on OpenJDK.
Bugzilla Report 44889.
* new protected getConnection and getStatement methods allow
subclasses of SQLExec more control - or access to the cached
instances when overriding other methods like runStatements.
Bugzilla Report 27178.
* <sql> has a new failOnConnectionError attribute that can be used to
keep a build going even if the task failed to connect to the
Bugzilla Report 36712.
* A new attribute strictDelimiterMatching can be used to ignore case
or whitespace differences when <sql> searches for delimiters.
This is useful if you execute a SQL script that has contains "GO"
and "go" as delimiters.
Bugzilla Report 26459.
* A new showWarnings attribute of <sql> allows warnings to be logged.
Bugzilla Report 41836.
* A new treatWarningsAsErrors attribute of <sql> can be used to fail
a build if a warning occurs.
Bugzilla Report 41836.
* Ant now supports scoped properties (see Local task).
Bugzilla Report 23942.
* <sql>'s CSV output can be controlled via the new attributes
csvColumnSeparator and csvQuoteCharacter.
Bugzilla Report 35627.
* <ftp>'s logging has been improved.
Bugzilla Reports 30932, 31743.
* It is now possible to disable <ftp>'s remote verification.
Bugzilla Report 35471.
* <sshexec> now supports input in a way similar to <exec>
Bugzilla Report 39197.
* <scp> can now preserve the file modification time when downloading
Bugzilla Report 33939.
* the new task sshsession can run multiple tasks in the presence of
an SSH session providing (local and remote) tunnels.
Bugzilla Report 43083.
* ZipOutputStream has been sped up for certain usage scenarios that
are not used by Ant's family of zip tasks.
Bugzilla Report 45396.
* <echo> supports an "output" Resource attribute as an alternative to "file".
* <sql> "output" attribute now supports any Resource in addition to a file.
* <scp> no longer requires a passphrase when using key based
Bugzilla Report 33718.
* a new failOnEmptyArchive attribute on <unzip> and <untar> can now
make the task fail the build if it tries to extract an empty
* <unzip> and <untar> have a new attribute stripAbsolutePathSpec.
When set to true, Ant will remove any leading path separator from
the archived entry's name before extracting it (making the name a
relative file name).
Bugzilla Report 28911.
* <unzip> will now detect that it was asked to extract a file that is
not an archive earlier if the file is big.
Bugzilla Report 45463.
* New file and resource selectors <readable/> and <writable/> have
been added that select file which the current process can read or
Bugzilla Report 45081.
* The filename file selector has a new attribute regex that allows
files to be selected by matching their names against a regular
Bugzilla Report 45284
* The name resource selector has a new attribute regex that allows
resources to be selected by matching their names against a regular
Bugzilla Report 45284
* Enhanced performance of Project.fireMessageLoggedEvent and DirectoryScanner
Bugzilla Reports 45651 and 45665
* The package list location for offline links can now be specified as
an URL.
Bugzilla Report 28881
* <echoxml> now supports XML namespaces.
Bugzilla Report 36804.
* A new listener for <junit> has been added that tries to invoke the
tearDown method of a TestCase if that TestCase was run in a forked
VM and the VM crashed or a timeout occurred. See the <junit> task's
manual page for details.
Bugzilla Report 37241.
* The Jar task now supports the addition of a jar index file in update mode.
Previously the absence of the index was not enough to trigger the rebuild;
some other update was necessary.
Bugzilla report 45098.
* <ant> has a new attribute "useNativeBasedir" that makes the child
build use the same basedir it would have used if invoked from the
command line. No matter what other attributes/properties have been
Bugzilla Report 45711.
* <patch> has a new optional failOnError attribute.
Bugzilla Report 44772.
* Antlib descriptors will now be parsed by the configured
ProjectHelper if the implementation overrides the new
canParseAntlibDescriptor and parseAntlibDescriptor methods. If the
configured helper doesn't override the methods, a new instance of
ProjectHelper2 will be used just like in Ant 1.7.1.
Bugzilla Report 42208.
* It is now possible to explicitly set the executable used by
Bugzilla Report 39189.
* <compositemapper>'s order of results is now predictable.
Bugzilla Report 44873
* a new <firstmatchmapper> has been added, which works similar to
<compositemapper> but only returns the results of the first nested
mapper that matches.
Bugzilla Report 44873
* <get> has a new maxtime attribute that terminates downloads that
are taking too long.
Bugzilla Report 45181.
* <ftp> now supports selectors for remote directories as well.
Bugzilla Report 44726.
* In some cases Ant fails to rename files if the source or target
file has just recently been closed on Windows. It will now try to
delete the offending file once again after giving the Java VM time
to really close the file.
Bugzilla Report 45960.
* two new properties can be used to set the MIME-Type and charset
used by MailLogger.
Bugzilla Report 27211.
* a new attribute of <mail> allows the task to succeed if it can
reach at least one given recipient.
Bugzilla Report 36446.
* two new properties allow MailLogger to send a fixed text instead of
the log file.
Bugzilla Report 38029.
* <cvsversion> is supposed to support CVSNT now.
Bugzilla Report 31409.
* <cvs>' port attribute should now work for all clients that use the
environment variable CVS_PSERVER_PORT instead of the "official"
Bugzilla Report 30124.
* <cvsversion> now works for local repositories as well.
* <cvstagdiff> has an option to ignore removed files now.
Bugzilla Report 26257.
* <cvs> and friends now support modules with spaces in their names
via nested <module> elements.
* A new attribute "ignoreEmpty" controls how <concat> deals when
there are no resources to concatenate. If it is set to false, the
destination file will be created regardless, which reinstates the
behavior of Ant 1.7.0.
Bugzilla Report 46010.
* If the new remote attribute is set to true, <cvschangelog> can now
work against a remote repository without any working copy.
Bugzilla Report 27419.
* start and end tags can now be used instead of dates in
Bugzilla Report 27419.
* MailLogger and <mail> can now optionally enable support for
Bugzilla Report 46063.
* <import> has new attributes "as" and "prefixSeparator" that can be
used to control the prefix prepended to the imported targets'
* a new task <include> provides an alternative to <import> that
should be preferred when you don't want to override any targets.
* delete has a new attribute removeNotFollowedSymlink. If set to
true, symbolic links not followed (because followSymlinks was false
or the number of symlinks was too big) will be removed.
Bugzilla Report 36658.
* the os and osfamily attributes of <chown>, <chgrp>, <chmod> and
<attrib> can now be used to run the commands on operating systems
other than their "native" environment, i.e. non-Unix or non-Windows
operating systems respectively.
Bugzilla Report 7624.
* a new resource collection <mappedresources> generalizes the prefix
and fullpath attributes of <zipfileset> to arbitrary mappers that
can be applied to arbitrary resource collections.
Bugzilla Report 4240.
* <tarfileset> and <zipfileset> have a new attribute
errorOnMissingArchive that allows "optional" filesets that don't
break the build if the archive doesn't exist.
Bugzilla Report 46091.
* <javadoc> has new attributes that correspond to the
-docfilessubdirs and -excludedocfilessubdir command line arguments.
Bugzilla Report 34455.
* <xslt> now fails early if a specified stylesheet doesn't exist.
Bugzilla Report 34525.
* <xslt> now has an option to suppress transformer warnings. This
option only has an effect for processors that support this feature;
the "trax" processor included with Ant does support it.
Bugzilla Report 18897.
* <xslt> has two new attributes failOnError and
failOnTransformationError that can be used to not make the build
process proceed if an error occurs.
Bugzilla Report 36260.
* <xslt> has a new attribute failOnNoResources that can be used to
make the build fail/continue if the collection of resources to
transform is empty.
Bugzilla Report 46274.
* It is now possible to define system properties that should be set
during xslt's transformation. This can be used to enable XInclude
processing in Xerces, for example.
Bugzilla Report 36653.
* a new resource collection <archives> can be used to specify
collections of ZIP and TAR archives as sources. It extracts them on
the fly. This is a generalization of the <zipgroupfileset> found
as nested element of <zip> and friends.
Bugzilla Report 46257.
* <dependset> has a new verbose attribute that makes the task list
all deleted targets and give a hint as to why it deleted them.
Bugzilla Report 13681.
* <replaceregexp> now supports arbitrary filesystem based resource
Bugzilla Report 46341.
* <replace> now supports arbitrary filesystem based resource
Bugzilla Report 24062.
* token and value of <replace>'s nested <replacefilter> can now also
be specified as nested elements to allow multiline content more
Bugzilla Report 39568.
* <replace> and <replaceregexp> can now optionally preserve the file
timestamp even if the file is modified.
Bugzilla Report 39002.
* The <replace> child-elements <replacetoken> and <replacevalue> have
a new attribute that controls whether properties in nested text get
Bugzilla Report 11585.
* <replace> has a new attribute failOnNoReplacements that makes the
build fail if the task didn't do anything.
Bugzilla Report 21064.
* <sync>'s <preserveInTarget> has a new attribute that controls
whether empty directories should be kept.
Bugzilla Report 43159.
* ant -diagnostics now checks that it can read as much from the
temporary directory as it has written. This may help detecting a
full filesystem.
Bugzilla Report 32676.
* <pathconvert> has a new preserveduplicates attribute--historically
these were eliminated in the interest of behaving in the manner
of a "path."
* <javac>'s source and target attributes are no longer ignored when
using gcj.
Bugzilla Issue 46617.
* ant -diagnostics now outputs information about the default XSLT
Bugzilla Issue 46612.
* the ZIP library will now ignore ZIP extra fields that don't specify
a size.
Bugzilla Report 42940.
* CBZip2OutputStream now has a finish method separate from close.
Bugzilla Report 42713.
* the <zip> and <unzip> family of tasks has new options to deal with
file name and comment encoding. Please see the zip tasks'
documentation for details.
* <input ...><handler type="secure" /></input> now uses previously
undocumented SecureInputHandler shipped with Ant 1.7.1.
* Command line arguments for <exec> and similar tasks can now have
optional prefix and suffix attributes.
Bugzilla Report 47365
* <apply>'s srcfile and targetfile child elements can now have
optional prefix and suffix attributes.
Bugzilla Report 45625
* <jar> has a new attribute to enable indexing of META-INF
directories which is disabled for backwards compatibility reasons.
Bugzilla Report 47457
* <apt>'s executable attribute can be used to specify a different
Bugzilla Report 46230.
* <rmic>'s new executable attribute can be used to specify a
different executable.
Bugzilla Report 42132.
* <javac>, <rmic>, <javah> and <native2ascii> now provide a nested
element to specify a classpath that will be used when loading the
task's (compiler) adapter class.
Bugzilla Report 11143.
* <javac>, <rmic>, <javah> and <native2ascii> now provide a nested
element to specify the task's (compiler) adapter as an instance of
a class that has been defined via typedef/componentdef. This
allows more control over the classpath and allows adapters to be
defined in Antlibs easily.
* A new subclass of
AntClassLoader has been added which overrides getResources
which became non-final in ClassLoader with Java5+ so
this method now behaves as expected.
The new subclass will be used by Ant internally if it is available
and Ant is running on Java5 or more recent.
Bugzilla Report 46752.
* a new attributes can chose a different request method than GET for
the http condition.
Bugzilla Report 30244
* <splash> now supports a configurable display text and a regular
expression based way to determine progress based on logged messages.
Bugzilla Report 39957.
* the number of retries on error in <get> is now configurable. <get>
can be told to not download files that already exist locally.
Bugzilla Report 40058.
* Ant now builds against commons-net 2.0 as well.
Bugzilla Report 47669.
* A new nested element connectionProperty of <sql> allows setting of
arbitrary JDBC connection properties.
Bugzilla Report 33452.
* A new islastmodified condition can check the last modified date of
* <rmic> has a new destDir attribute that allows generated files to
be written to a different location than the original classes.
Bugzilla Report 20699.
* <rmic> has a new listfiles attribute similar to the existing one of
Bugzilla Report 24359.
* It is now possible to suppress the "FAILED" lines sent to Ant's
logging system via <junit>'s new logFailedTests attribute.
Bugzilla Report 35073.
* <propertyfile> now can delete entries.
* The <resources> resource collection can now optionally cache its
* A new <resourceexists> condition can check whether resources exists.
* <sql> has two new attributes errorproperty and warningproperty that
can be set if an error/warning occurs.
Bugzilla Report 38807.
* <sql> has a new attribute rowcountproperty that can be used to set
a property to the number of rows affected by a task execution.
Bugzilla Report 40923.
* when Ant copies files without filtering, it will now use NIO
Bugzilla Report 30094.
* <get> has a new attribute that can be used to disable caching on
HTTP connections at the HttpUrlConnection level.
Bugzilla Report 41891.
* <tar> and <zip> (and tasks derived from <zip>) will now create the
parent directory of the destination archive if it doesn't exist.
Bugzilla Report 45377.
* A new filterreader <sortfilter> that sorts input lines has been
Bugzilla Report 40504.
* A new token filter <uniqfilter> that suppresses tokens that match
their ancestor token has been added.
* <rootfileset>s nested into <classfileset>s can now use a dir
attribute different from the <classfileset>.
Bugzilla Report 37763.
* <path> can now optionally cache its contents.
* <property> can now specify values as nested text.
Bugzilla Report 32917.
* a new parentFirst attribute on <javaresource> allows resources to
be loaded from the specified classpath rather than the system
Bugzilla Report 41369.
* <property location="from" basedir="to" relative="true"/> can now
calculate relative paths.
* The <name> selector supports a new handleDirSep attribute that
makes it ignore differences between / and \ separators.
Bugzilla Report 47858.
* <get> now supports resource collections (as long as the resources
contained provide URLs) and can get multiple resources in a single
* <import> can now import non-File resources if they provide an URL
- as the <url> and <javaresource> resources do.
Bugzilla Report 29251
* <import> can now import multiple resources specified as resource
Bugzilla Report 22269.
* a new <resourcelist> type is similar to <filelist> but can read the
list of resources from non-file resources and may return resources
that are not files.
* a new filterreader appendtolines complements prefixlines.
* a new top level element extension-point allows build files to be
extended with custom targets more easily.
Changes from Ant 1.7.0 TO Ant 1.7.1
Changes that could break older environments:
* String resources only have properties single expanded. If you relied on
<string> resources being expanded more than once, it no longer happens.
Bugzilla report 42277.
* A String resource's encoding attribute was only taken into account when
set from the resource's OutputStream; the InputStream provided the String's
binary content according to the platform's default encoding. Behavior has
been modified to encode outgoing (InputStream) content as well as encoding
incoming (OutputStream) content.
* <java> with fork now returns gives -1 instead of 0 as result when failonerror
is false and some exception (including timeout) occurs. Br 42377.
* ant-type attribute has been marked as deprecated and a warning has been
issued if it is encountered in the build file.
Fixed bugs:
* The default logger was failing to print complete stack traces for exceptions
other than BuildException, thus omitting often important diagnostic
information. Bugzilla 43398.
* Error in FTP task
Bugzilla report 41724
* Regression: Locator fails with URI encoding problem when spaces in path
Bugzilla report 42222
* Regression in Locator: running Ant off a network share does not work:
message "URI has authority component" appears
Bugzilla report 42275
* Improvements in AntClassLoader Speed.
Bugzilla report 42259
* Error in handling of some permissions, most notably the AllPermission on
jdk 1.5
Bugzilla report 41776
* Replace task summary output incorrect.
Bugzilla report 41544
* Dependset crashes ant when timestamp on files change during Dependset
Bugzilla report 41284
* Bug in
Bugzilla report 41411
* <junit> in Ant 1.7.0 could throw NPE if no <classpath> was defined.
Bugzilla report 41422.
* In Ant 1.7.0, <fileset> in <javadoc> does not by default include only
**/*.java as the documentation claims and earlier revisions did.
Bugzilla report 41264.
* SPI support in jar was broken.
Bugzilla report 41201.
* jsch-0.1.30 causes SCP task to hang
Bugzilla report 41090.
* Target from imported file listed twice in projecthelp.
Bugzilla report 41226.
* <sql> task double-expands properties if expandproperties is true,
and expands properties if expandproperties is false.
Bugzilla report 41204.
* Rolling back Bugzilla 32927 (set a default description for a javadoc tag
if not set) as it caused a BC problem.
Bugzilla report 41268.
* <apt> forks properly and so memory settings are picked up.
Bug report 41280.
* Regression: NPE was thrown when using <pathconvert> against a
(third-party instantiated) fileset with null Project reference.
* Strip out all -J arguments to non forking rmic adapters, specifically
the Sun and Weblogic compilers.
Bug report 41349
* Synchonization issues in PropertyHelper. Bugzilla 41353.
* <concat binary="true" append="true"> did not append. Bugzilla 41399.
* -autoproxy turns Java1.5+ automatic proxy support on. Bugzilla 41904
* Handle null result of system getProperty(). Bugzilla 42334.
* Regression: concat fixlastline="true" should not have applied to
nested text, but did in Ant 1.7.0. Bugzilla 42369.
* Regression: ant.version was not passed down in <ant>, <subant>.
This worked in Ant 1.6.5, but not in 1.7.0.
ant.core.lib (added in 1.7.0) was also not being propagated.
Bugzilla bug 42263
* Regression: bzip2 task created corrupted output files for some inputs.
Bugzilla bug 41596.
* Regression: <available> with <filepath> did not work.
Bugzilla 42735.
* ant script, cd may output to stdout.
Bugzilla 42739.
* Modified selector doesn't update the cache if only one file has changed.
Bugzilla 42802.
* Regression: Path subclasses that overrode list() stopped working in
resourceCollection contexts in Ant 1.7.0. Bugzilla 42967.
* <property> supports loading from xml based property definition.
Bugzilla 42946
* <junit> supports collecting and rerunning failed test cases
(textXXX methods). Bugzilla 42984.
* War task failed with "No WEB-INF/web.xml file was added" when called
a second time. Bugzilla 43121.
* FilterMapper could throw an NPE.
Bugzilla 43292.
* Regession nested macrodefs with elements could cause StackOverFlow.
Bugzilla 43324.
* Some changes to <junit> broke third party tasks that extend it (like
Apache Cactus' Ant task). The changes have been modified so that
subclases should now work again - without any changes to the
Other changes:
* Various small optimizations speed up common tasks such as <javac> on large
filesets, reducing both I/O and CPU usage.
* Profiling logger has been added with basic profiling capabilities.
* <script> now has basic support for JavaFX scripts
* SSH task can now take a command parameter containing the commands to execute.
This allows you to connect to a server and execute a number of commands
without constantly reconnecting for each command.
* Upgraded XML API to XML commons version 1.3.04.
* Upgraded to Xerces 2.9.0
* <script> can now work with bsf.jar and js.jar in its <classpath>.
* add errorProperty and updatedProperty to <javac>
Bugzilla 35637 and 28941.
* add classpathref attribute to <whichresource>
Bugzilla 41158.
* reduce logging noise of <apply skipemptyfilesets="true">
Bugzilla 29154
* Show Previous Revision in the tagdiff.xsl stylesheet
Bugzilla 29143
* Allow <mapper refid> to refer directly to a FileNameMapper instance.
* If you try and use a type in a namespace (or an antlib), and the type is not
recognized but there are other definitions in that namespace, Ant lists what
the known definitions are. This helps you find spelling errors.
* Add a <last> resource collection, corresponding to <first>.
* Add new <truncate> task.
* <junitreport> xsl stylesheets allow setting the title used in <title> and <h1> tags by
using <report><param> element. Bugzilla 41742.
* Add IgnoreDependenciesExecutor for weird cases when the user wants to run
only the targets explicitly specified.
* Patternset allows nested inverted patternsets using <invert>.
* <manifest> checks for validity of attribute names.
* JUnitVersionHelper.getTestCaseClassName is now public. Bugzilla 42231
* <string> resource supports nested text. Bugzilla bug 42276
* <scriptdef> now sources scripts from nested resources/resource collections. This lets you
define scripts in JARs, remote URLs, or any other supported resource. Bugzilla report 41597.
* <concat> is now usable as a single-element ResourceCollection.
* It is now possible to provide the value of a <striplinecomments> filter's
<comment> nested element as nested text instead of using the 'value'
* A new logger, BigProjectLogger, lists the project name with every target
* Default text added to macrodef. Bugzilla report 42301.
* "rawblobs" attribute added to SQL task.
* Add new retry task container.
* <jar> has a new strict attribute that checks if the jar complies with
the jar packaging version specification.
* <javac> has a new attribute - includeDestClasses.
Bugzilla 40776.
* <fileset> has a new attribute - errorOnMissingDir.
Bugzilla 11270.
* <javac> handles files, there were repeatedly compiled.
Bugzilla 43114.
* SecureInputHandler added to use Java 6 System.console().readPassword()
when available.
Changes from Ant 1.6.5 to Ant 1.7.0
Changes that could break older environments:
* Initial support for JDK 6 (JSR 223) scripting.
<*script*> tasks will now use javax.scripting if BSF is
not available, or if explicitly requested by using
a "manager" attribute.
* Removed launcher classes from nodeps jar.
* <classconstants> filter reader uses ISO-8859-1 encoding to read
the java class file. Bugzilla report 33604.
* Defer reference process. Bugzilla 36955, 34458, 37688.
This may break build files in which a reference was set in a target which was
never executed. Historically, Ant would set the reference early on, during parse
time, so the datatype would be defined. Now it requires the reference to have
been in a bit of the build file which was actually executed. If you get
an error about an undefined reference, locate the reference and move it somewhere
where it is used, or fix the depends attribute of the target in question to
depend on the target which defines the reference/datatype.
As a result of testing on real live build scripts, a fall-back mechanism
was put it place to allow references that are out-of-band to be resolved. If
this happens a big warning message is logged. This fall-back mechanism will
be removed in Ant 1.8.0.
* <script> and <scriptdef> now set the current thread context.
* Unrestrict the dbvendor names in the websphere element of the ejbjar task.
Bugzilla Report 40475.
* <env> nested element in <java>, <exec> and others is now case-insensitive
for windows OS. Bugzilla Report 28874.
* Removed support for xalan1 completely. Users of Xalan1 for Ant builds will
have to stay at ant 1.6.5 or upgrade to xalan2.
* Use org.apache.log4j.Logger instead of org.apache.log4j.Category.
Category has been deprecated for ~2 years and has been removed from
the log4j code. Logger was introduced in log4j 1.2 so users of
log4j 1.1 and log4j 1.0 need to upgrade to a newer version of log4j.
Bugzilla Report 31951.
* build.sysclasspath now also affects the bootclasspath handling of
spawned Java VMs. If you set build.sysclasspath to anything other
than "ignore" (or leave it unset, since "ignore" is the default when
it comes to bootclasspath handling), then the bootclasspath of the
VM running Ant will be added to the bootclasspath you've specified.
* The <java fork="false"> now as per default installs a security manager
using the default permissions. This is now independent of the
failonerror attribute. Bugzilla report 33361.
* <signjar> now notices when the jar and signedjar are equal, and switches
to the same dependency logic as when signedjar is omitted. This may break
something that depended upon signing in this situation. However, since
invoking the JDK jarsigner program with -signedjar set to the source jar
actually crashes the JVM on our (Java1.5) systems, we don't think any
build files which actually worked will be affected by the change.
* <signjar> used to ignore a nested fileset when a jar was also provided as an
attribute, printing a warning message; now it signs files in the fileset.
* An improved method of handling timestamp granularity differences between
client and server was added to the <ftp> task. FTP servers typically
have HH:mm timestamps whereas local filesystems have HH:mm:ss timestamps.
Previously, this required tweaking with the timediffmillis attribute
which also was used to handle timezone differences. Now, there is a new
timestampgranularity attribute. The default value for get operations is 0
since the user has the more powerful preservelastmodified attribute to work
with. Since this is not available on put operations the default value
adds a minute to the server timestamp in order to account for this,
Scripts which previously used timediffmillis to do this compensation may
need to be rewritten. timediffmillis has now been deprecated.
* Support for the XSL:P XML parser has been removed.
Bugzilla Report 23455.
* Visual Age for Java optional tasks removed as the required library is no
longer available.
* Testlet (test) optional task removed as the required library is no
longer available.
* IContract optional task removed as the required library is no
longer available.
* Metamata (maudit, mmetrics, and mparse tasks) removed as the required
library is no longer available.
* Sitraka (jpcoverage, jpcovmerge, jpcovreport) tasks suppressed as the
required library is no longer available.
* <fixcrlf> used \r (Mac) line endings on OS X, whose proper line separator
is \n (Unix). Bugzilla report 39585.
* <scp> now optionally supports the sftp protocol, you may need a
newer jsch.jar. Bugzilla Report 39373.
* Ant launcher program prints errors to stderr, and exits with a 2 exit code
value if, for any reason, it cannot actually start Ant proper. This will only
affect programs/scripts that called the launcher and which did not want to
receive an error if Ant itself would not start
* All .NET tasks are now deprecated in favor of the new .NET Antlib:
Fixed bugs:
* Directory deletion did not work properly.
Bugzilla 40972.
* docletpath attribute of javadoc was ignored.
Bugzilla 40900.
* Fixed incorrect recursion in DOMUtil.listChildNodes().
Bugzilla 40918.
* CompressedResource.compareTo() did not
take comparison with another CompressedResource into account.
Bugzilla 40949.
* Avoid possible NPE in
Bugzilla 40847.
* regression in attribute prefix (+ others) for refid in zipfileset and tarfileset.
Bugzilla 41004, 30498.
* dependset failed if the basedir of a target fileset did not exist.
Bugzilla 40916.
* Recursive filtering encountered NullPointerExceptions under certain
circumstances. Bugzilla 41086.
* XmlProperty overrides previously set property value when handling duplicate
elements. Bugzilla 41080.
* Having many tasks causes OOM. Bugzilla 41049.
* Regression: <path> was evaluating nested content only once, so that it could
not e.g. pick up files that didn't exist the first time through.
Bugzilla 41151.
* OOM caused by IH holding on to classes and thus their classloaders.
Bugzilla 28283 and 33061.
* <delete> doesn't delete when defaultexcludes="false" and no includes is set
fixed. Bugzilla 40313.
* Behavior change of DirectoryScanner/AbstractFileset when conditional include
patterns are used. Bugzilla 40722.
* <javac> fails with NPE when compiling with eclipse ecj 3.1.x.
Bugzilla 40839.
* JUnitTestRunner had a NPE when unable to create parser, the exception
containing the error did not get reported. Bugzilla 36733.
* <checksum> with file and todir option failed. Bugzilla report 37386.
* <path location="loc"> was broken (Regression from beta1).
Bugzilla report 40547.
* Nested fileset in <cab> did not work. Bugzilla report 39439.
* The ant wrapper script should now correctly locate the java
executable in more recent IBM JDKs for AIX as well.
* URLResource did not close jar files, and also did not disconnect HTTPConnection (s).
* Error calling junitreport. Bugzilla 40595.
* <junittask/> created junitvmwatcher*.properties files but did not close and delete them.
* <xmlproperty> did not create properties for empty leaf elements.
Bugzilla report 26286.
* UnknownElement.maybeConfigure always configured.
Bugzilla report 40641.
* No check for refid when prefix attribute is set in zipfileset.
Bugzilla report 30498.
* Fix for junit4 issue introduced since beta2.
Bugzilla report 40682.
* Error in duplicate project name with <import> and <antcall>.
Bugzilla report 39920.
* junit4 did not work with fork=no and junit4 in $ANT_HOME/lib.
Bugzilla report 40697.
* PathConvert on Windows should process forward and back slashes equivalently.
Bugzilla report 32884.
* ant.bat now looks in %USERPROFILE% and %HOMEDRIVE%%HOMEPATH% in addition to
%HOME% for pre/post batch files. Bugzilla report 39298.
* The inheritance hierarchy of the legacy <path> type was changed; code built
against Ant 1.7 would therefore no longer execute on older versions of Ant.
Since <path> is historically heavily used this was undesirable, and since it
is also avoidable, the change to <path>'s taxonomy was reverted.
* <zip filesonly="true"> included empty directories. Bugzilla report 40258.
* Invalid hash code of Target causes XmlLogger to fail.
Bugzilla report 40207.
* Macro element did not include top level Text. Bugzilla report 36803.
* AntClassLoader did not isolate resources when isolate was set. Bugzilla report 38747.
* Diagnostics broken when using java 1.4. Bugzilla report 40395.
* Exception reporting in <copy> was broken. Bugzilla report 40300.
* Handling of corrupt tar files, never returns EOF.
Bugzilla report 39924.
* Some bugs in ReaderInputStream. Bugzilla report 39635.
* <antlr> did not recognise whether the target is up-to-date for html option.
Bugzilla report 38451.
* Documented minimal version of jsch now 0.1.29.
Bugzilla report 40333.
* <available> searched parent directories for files.
Bugzilla report 37148.
* The build could be halted if a file path contained more ".." components than
the actual depth of the preceding path. Now such paths are left
alone (meaning they will likely be treated as nonexistent
files). Bugzilla Report 40281.
* Converting a <dirset> to a string was broken. Bugzilla Report 39683.
* Manifests have improved line length handling, taking care of encoding.
Bug reports 37548 / 34425.
* <manifest> now closes the inputstream explicitly. Bug report 39628.
* <rpm> now also correctly searches the first element of the path.
Bug report 39345.
* ant.bat now handles classpath set to "". Bug report 38914.
* <junit> now supports JUnit 4. Bugzilla Report 38811.
* <junit> can now work with junit.jar in its <classpath>. Bugzilla
Report 38799.
* Some potential NullPointerExceptions, Bugzilla Reports 37765 and 38056.
* Problem when adding multiple filter files, Bugzilla Report 37341.
* Problem referencing jars specified by Class-Path attribute in manifest
of a ant task jar file, when this ant task jar file is located in
a directory with space, Bugzilla Report 37085.
* Backward incompatible change in ZipFileSet, Bugzilla Report 35824.
* Wrong replacement of file separator chars prevens junitbatchtest
from running correctly on files from a zipfileset. Bugzilla Report 35499.
* Calling close twice on ReaderInputStream gave a nullpointer exception.
Bugzilla Report 35544.
* Memory leak from IntrospectionHelper.getHelper(Class) in embedded
environments. Bugzilla Report 30162.
* Translate task does not remove tokens when a key is not found.
It logs a verbose message. Bugzilla Report 13936.
* Incorrect task name with invalid "javac" task after a "presetdef".
Bugzilla reports 31389 and 29499.
* <manifest> was not printing warnings about invalid manifest elements.
Bugzilla report 32190.
* <replace> got out of memory on large files (part of report 32566).
<replace> can now handle files as long as there is enough disk space
* Commandline.describeCommand() methods would attempt to describe
arguments even when none, other than the executable name, were present.
* Create signjar's helper ExecTask instance directly rather than by
typedef discovery mechanisms. Bugzilla report 33433.
* FileUtils.resolveFile() promised to return absolute files but
did not always do so.
* <ftp> failed to retrieve a file when the path towards the file contained
an element starting with . Bugzilla report 33770.
* "<rmic> always compiles on Java1.5" bugzilla report=33862. Fixed default
stub version to always be "compat", even on Java1.5+.
* The .NET compilation tasks failed if filenames given as references
contained spaces. Bugzilla Report 27170.
* SQL task would try access result sets of statements that didn't
return any, causing problems with Informix IDS 9.2 and IBM DB2 8.1
FixPak 6 (or later). Bugzilla Reports 27162 and 29954.
* Task.init() was called twice for most tasks. Bugzilla Report 34411.
* JavaTest testcases sometimes fail on windows. Bugzilla Report 34502.
* Targets with identical name work in imported project. Bugzilla Report 34566.
* DemuxOutputStream now uses a WeakHashMap to store the thread-stream mapping,
to avoid holding on to thread references after they terminate.
* <xmlvalidate> and <schemavalidate> create a new parser for every file in a
fileset, and so validate multiple files properly. Bugzilla Report 32791.
* <tar> / <untar> now accepts files upto 8GB, <tar> gives an error if larger
files are to be included. This is the POSIX size limit.
* <junitreport> removed line-breaks from stack-traces. Bugzilla
Report 34963.
* Off-by-one error in environment setup for execution under OpenVMS fixed.
* Bugzilla report 36171: -noclasspath crashes ant if no system
classpath is set.
* <pvcs> used wrong switch for retrieving revisions by label.
Bugzilla Report 36359.
* <sshexec> closed System.out, disabling output on second and subsequent
invocations. Bugzilla report 36302.