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
library.
* <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.
https://issues.apache.org/jira/browse/COMPRESS-324
* <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>
task.
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.
https://github.com/apache/ant/pull/15
* <javac> now supports Java9 modules.
https://github.com/apache/ant/pull/16
* <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
Issues found with existing distfiles:
distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
distfiles/fortran-utils-1.1.tar.gz
distfiles/ivykis-0.39.tar.gz
distfiles/enum-1.11.tar.gz
distfiles/pvs-3.2-libraries.tgz
distfiles/pvs-3.2-linux.tgz
distfiles/pvs-3.2-solaris.tgz
distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
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.
https://issues.apache.org/jira/browse/COMPRESS-317
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
fields.
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.
* runant.py 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
* complete-ant-cmd.pl 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 https://issues.apache.org/jira/browse/COMPRESS-297
* 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
* complete-ant-cmd.pl would incorrectly suggest words from the build
file description.
Bugzilla Report 51931
* complete-ant-cmd.pl 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
* complete-ant-cmd.pl now also analyzes the ANT_ARGS environment
variable.
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
0x80000000.
https://issues.apache.org/jira/browse/COMPRESS-314https://issues.apache.org/jira/browse/COMPRESS-315
* <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 java.io.File. 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
readers.
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
exception.
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
NUL.
* the isExists() method of URLResource returned false positives for
HTTP and FTP URLs.
Other changes:
--------------
* initial support for Java 1.9
* <sshexec> can optionally pass System.in 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.
Changelog:
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
* Add 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
org.apache.tools.ant.taskdefs.launcher 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
handledirsep="true".
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 org.apache.tools.ant.ArgumentProcessor 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
Compress.
* Using specially crafted inputs this can be used as a denial of
service attack.
See CVE-2012-2098.
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
files.
Bugzilla Report 50866.
* Read on System.in 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.
* System.in 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
quoted.
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
attribute.
Bugzilla Report 50513.
* the documented inputstring attribute of sshexec has been
implemented and the actually existing attribute inputproperty
documented.
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
instead.
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
algorithms.
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 { remained { rather than being turned
into &#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
task.
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.
* DemuxInputStream.read() 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
itself.
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.
* runant.py 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 ".."
segments).
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
wrong.
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
line)
Other changes:
--------------
* <concat>'s force attribute has been deprecated in favor of a new
overwrite attribute that is consistent with <copy>'s attribute
names.
* 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
attribute.
* 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
BuildExceptions.
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 java.net.CookieStore 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.
Fixes PR pkg/43752
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
maps.
* The filesmatch condition threw a NullPointerException when
comparing text files and the second file contained fewer lines than
the first one.
* Regression: The <ear> task would allow multiple
META-INF/application.xml files to be added.
* VectorSet#remove(Object) would fail if the size of the vector
equaled its capacity.
* Regression : ant -diagnostics was returning with exit code 1
* Fix for exec task sometimes inserts extraneous newlines
* SymlinkTest#testSymbolicLinkUtilsMethods failing on MacOS
* If <concat>'s first resourcecollection child is a <resources>,
any subsequently added child resourcecollection joins the first.
* <get> with an invalid URL could trigger an NPE in some JVMs.
* Broken Pipe issue under Ubuntu Linux
* Properties wrongly read from file or not update during read
* AntClassLoader in Ant 1.8.0 has been considerably slower than in
1.7.1
* ANT_CMD_LINE_ARGS are rippling through lower level Ant usage
* email : IO error sending mail with plain mimetype
* the complete-ant-cmd.pl script failed to create a proper cache of
target if "ant -p" failed.
* <rmic>'s sourcebase attribute was broken.
* <copy>'s failonerror didn't work as expected when copying a single
element resource collection to a file.
* <get> no longer followed redirects if the redirect URL was relative
and not an absolute URL.
* fixed a performance degradation in the code that expands property
references.
* <jar filesetmanifest="merge"> was broken on Windows.
* <symlink> delete failed if the link attribute was a relative path
to a link inside the current directory without a leading ".".
* <telnet> and <rexec> failed to find the expected strings when
waiting for responses and thus always failed.
- 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.
* The <zip> family of tasks has been sped up for bigger archives.
* Add removeKeepExtension option to NetRexxC task.
* 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
* <junit> will now throw an exception if a test name is empty. This
used to manifest itself in unrelated errors like
* 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
1.7.1.
* Added SimpleBigProjectLogger, intermediate between NoBannerLogger and
BigProjectLogger.
* <mappedresources> supports new attributes enablemultiplemappings
and cache.
* Added the augment task to manipulate existing references via Ant's basic
introspection mechanisms.
Fix PR pkg/42990
* Lexically scoped local properties, i.e. properties that are only defined
inside a target, sequential block or similar environment.
* <import> can now import from any file- or URL-providing resource - this
includes <javaresource>.
* Various improvements to the directory scanning code that help with symbolic
link cycles (as can be found on MacOS X Java installations for example) and
improve scanning performance. For big directory trees the improvement is
dramatic.
* The way developers can extend Ant's property expansion algorithm has been
rewritten (breaking the older API) to be easier to use and be more powerful.
a new top level element extension-point allows build files to be extended
with custom targets more easily
* At the same time the if and unless attributes have been rewritten to do the
expected thing if applied to a property expansion (i.e. if="${foo}" will mean
"yes, do it" if ${foo} expands to true, in Ant 1.7.1 it would mean "no"
unless a property named "true" existed). This adds "testing conditions" as a
new use-case to property expansion.
* Ant now requires Java 1.4 or later
* new task include provides an alternative to <import> that should be preferred
when you don't want to override any targets
* numerous bug fixes and improvements as documented in Bugzilla and in WHATSNEW
patches to add it). Drop pax from the default USE_TOOLS list.
Make bsdtar the default for those places that wanted gtar to extract
long links etc, as bsdtar can be built of the tree.
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.
* The -noproxy option which was in the previous 1.7 alpha and beta
releases has been removed. It is the default behavior and not needed.
* 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.
* <script> and <scriptdef> now set the current thread context.
* Unrestrict the dbvendor names in the websphere element of the ejbjar task.
* <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.
* 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.
* <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.
* On Java1.5+, Ant automatically sets the system property
java.net.useSystemProxies to true, which gives it automatic use of the local
IE (Windows) or Gnome2 (Unix/Linux) proxy settings. This may break any build
file that somehow relied on content outside the firewall being unreachable:
use the -noproxy command-line option to disable this new feature.
Note that the Java1.5 proxy configuration system still does not
appear to work reliably on Windows or Linux.
* Support for the XSL:P XML parser has been removed.
* Visual Age for Java optional tasks removed.
* Testlet (test) optional task removed.
* Icontract optional task removed.
* Metamata (maudit, mmetrics, and mparse tasks) removed.
* Sitraka (jpcoverage, jpcovmerge, jpcovreport) tasks suppressed.
* <fixcrlf> used \r (Mac) line endings on OS X, whose proper line separator
is \n (Unix).
* <scp> now optionally supports the sftp protocol, you may need a
newer jsch.jar.
* 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:
http://ant.apache.org/antlibs/dotnet/index.html
Remove the files/ant script, by patching the bin/ant script, as ant people
worked on it.
I'm taking maintainership for this one
Fix PR 29038 and PR 29338, apache-ant now can use plugins
Fix PR 30332 (update to 1.6.5)
Approved by jwise@
Ant 1.6.2 fixes a large number of bugs and adds a number of features which
were asked for by users on Bugzilla.
Important changes (for a complete list see the included WHATSNEW document):
Changes that could break older environments:
--------------------------------------------
* The import task used the canonical version of a file path. This
has been changed to use the absolute path. Bugzilla 28505.
* ant-xalan2.jar has been removed since the only class contained in it
didn't depend on Xalan-J 2 at all. Its sole dependency has always
been TraX and so it has been merged into ant-trax.jar.
* All exceptions thrown by tasks are now wrapped in a buildexception
giving the location in the buildfile of the task.
* Nested elements for namespaced tasks and types may belong to the
Ant default namespace as well as the task's or type's namespace.
* <junitreport> will very likely no longer work with Xalan-J 1.
Note that Xalan-J 1 has been deprecated for a very long time and we
highly recommend that you upgrade.
If you really need to continue using Xalan-J 1, please copy the
junit-frames-xalan1.xsl from the distribution's etc directory as
junit-frames.xsl into a new directory and use the task's styledir
attribute to point to. This is the last version of the XSLT
stylesheet that is expected to be compatible with Xalan-J 1.
supplied automatically. (Apache themselves do not recommend building Ant
from source as it will miss a lot of important stuff in most cases.)
This fixes pkg/22034.
Also switch over to tar.bz2 archive.
Changes since 1.5.3:
Fixed bugs:
-----------
* The Visual Age for Java tasks didn't work (at least for versions 3.0
and higher). Bugzilla Report 10016.
* URL-encoding in <vaj*port> didn't work properly.
* VAJRemoteUtil called getAbsolutePath instead of getPath
causing problems when using a Windows VAJ server from a UNIX server.
Bugzilla Report 20457.
* VAJImport task failed with NullPointerException when using DirectoryScanner.
Bugzilla Report 22080.
Other changes:
--------------
* Shipped XML parser is now Xerces 2.5.0
* <javah> will invoke oldjavah on JDK 1.4.2. Bugzilla Report 18667.
* The VAJ tasks now support a haltonfailure attribute to conditionally
keep building even if they fail.
* It is now possible to use the latest (versioned or unversioned) edition
in <vajload> by using special wildcard characters. Also fixes
Bugzilla Report 2236.