One and a half year after Ant 1.5, we've finally released Ant 1.6.0. It's been a long time and many of Ant's internals have changed. The most notable changes IMHO:
- Ant has improved support for big build problems with new tasks <import> and <subant> that can be used to import (and extend) build templates or recursively run a common target in a whole hierarchy of build files.
New tasks can be created by composing existing tasks via <macrodef>.
This can be used to to eliminate <antcall> in many cases - but a few problems with Ant's immutable properties remain and will get addressed in a future release.
- Ant has added new introspection rules for nested elements, those are mainly visible to task writers. One effect of those new rules is that you can now define custom conditions for <condition> and friends without modifying Ant's code.
A new concept of Ant libraries has been introduced. You can use them as a composition of the old <typedef> and <taskdef>, but there is more.
Ant 1.6.0 now also supports XML namespaces and there is a certain URI space reserved for Ant libraries. If you use
xmlns:mytasks="antlib:org.example"
in your build file, Ant will look for an Ant library descriptor/org/example/antlib.xml
in the classpath and tie the definitions found to the namespace prefix mytasks. You don't have to do anything else to use your tasks after that.Speaking of classpath. Ant now has a new launcher that sets up the classpath for Ant - this means that Ant will no longer place the libraries found in ANT_HOME/lib into the system classloader, but instead into a "core classloader" that is used to load all Ant classes.
The new launcher's initial goal was to avoid a command line length limit problem on the Windows platform, but it adds a few additional features. ANT_HOME/lib is no longer unique, you can now point Ant at any directory using the -lib command line switch and all jars inside the directory will be added to Ant's core classloader.
- With the help of JSch Ant finally supports SSH and SCP. This has become possible since JCraft decided to license JSch under a BSDish license instead of the LGPL they used initiallly.
A more complete list can be found in the Release Notes.
path: /en/Apache/Ant | #
Three weeks of vacation in front of me and I bet I'll sleep a big part of it.
It is almost a tradition for my Christmas time vacations that I try to keep away from any keyboards, so this blog will probably be quite silent in the closer future.
path: /en/personal | #
I'll start vacation next Wednesday - which means a lot of stuff has to be finished by Tuesday. The usual end-of-the-year "finish the work of a month in a week" scenario we all know and love.
Spent two hours Tuesday night with Florian in the hospital (luckily nothing serious) and an hour last night with Sarah at the children's doc. She's caught a real influenza, which probably means that I'll be out with fever in a couple of days as well.
On top of that one of our budgies died Wednesday. He's been older than Florian, so for our kids he's always been there. Sad and ill children, a really great combination.
path: /en/personal/family | #
So finally we seem to be back on track for the 1.6 release. The third beta has been released a few hours ago. It contains a couple of major changes over beta2 but should be consistent with the final release.
Things that have changed over 1.6beta2 (apart from bug fixes):
- <macrodef> attributes are now expanded via @{foo} instead of ${foo} to highlight the fact that they are not properties
- namespace processing is now more consistent with XML namespaces.
Say you use Ant-Contrib as an antlib and use a namespace prefix of ac for it. With beta2 you'd write<ac:trycatch> <try> ... </try> </ac:trycatch>
where <try> is in the default namespace that is not related to Ant-Contrib (from an XML namespace point of view). With beta3 (and 1.6 final) you'll have to change that to<ac:trycatch> <ac:try> ... </ac:try> </ac:trycatch>
or set up a new default namespace for the scope of the task like<trycatch xmlns="antlib:net.sf.antcontrib"> <try> ... </try> </trycatch>
- The URI for the default namespace has been changed from ant:core to antlib:org.apache.tools.ant to be consistent with Ant library support.
- The XML APIs (DOM, JAXP, SAX) shipping with Ant have been upgraded to match the Xerces version.
path: /en/Apache/Ant | #
It happened twice to me during the past two weeks that I've been working on my iBook in a semi-public place and suddenly realized that I was connected to a wireless network - and had access to the internet. Both times pinging the broadcast address revealed that only the router and my laptop were part of the network.
So twice I've found a WLAN router that offered DHCP services and internet access without a password or even encryption - and Apple's WLAN implementation simply takes advantage of this by default. I'm pretty sure that those networks have not been supposed to offer the service to me.
Germany's DSL providers are currently selling WLAN routers packaged with a new DSL line at reasonably low prices. I assume their default configuration is to accept everything - for ease of installation. I wonder whether they tell their new customers to change the configuration (and the customers simply don't care) or if the non-tech-savvy customers don't even know they offer public services.
path: /en/unsorted | #
I've just downloaded the sources for Mono 0.29 and compiled them. As expected, things went fairly well on my Linux box.
One of the great news is that the JIT for PPC is supposed to work now, so I decided to try to compile it on my iBook. After installing fink, and then installing glib2 and pkgconfig via apt-get (dselect still doesn't like me) ./configure
went through - but then compilation failed.
Luckily the problem was easy to fix (you have to remove the typedef for socklen_t in mono/io-layer/socket.h
) and after that things go on.
The <csc> task tests for Ant pass, but it is still not possible to build NAnt with it (bus error) - so PPC may work, but probably only for Linux.
path: /en/dotNet/mono | #
My parents went to "Finding Nemo" with Florian last weekend. All three of them have enjoyed it a lot - so if you have a six year old in the house, give it a try.
path: /en/personal/family | #