How on earth did ant become the build tool for java?
I got pretty sick of netbeans taking forever to build a very simple JavaFX app on my apparently now-too-slow (too-little-memoried) dual-core laptop, and so looked into why it was taking so long by creating a Makefile.
I wasn't expecting this ...
[notzed@unknown001fe11d1e42 MapViewer]$ time ant clean jar ... many pages of completely illegible and altogether meaningless-to-human-or-computer output ... BUILD SUCCESSFUL Total time: 22 seconds real 0m22.527s user 0m32.211s sys 0m1.919s [notzed@unknown001fe11d1e42 MapViewer]$ make clean all ... a succinct if not particularly human-friendly list of the specific commands executed ... real 0m1.563s user 0m1.678s sys 0m0.349s [notzed@unknown001fe11d1e42 MapViewer]$
What? What? Huh?
Oh, so it seems 'ant clean' cleans all related projects as well so it's rebuilding many more files needlessly. I thought one of the main points of having multiple sub-projects is to avoid this kind of thing ... but yeah, "whatever", ... in the parlance of our time.
So what about just changing one file ...
[notzed@unknown001fe11d1e42 MapViewer]$ touch src/mapviewer/MapViewer.java [notzed@unknown001fe11d1e42 MapViewer]$ time ant jar .. pages of crap again ... BUILD SUCCESSFUL Total time: 7 seconds real 0m8.344s user 0m9.161s sys 0m1.038s [notzed@unknown001fe11d1e42 MapViewer]$
Even what amounts to a simple batch script which just does everything from scratch is an order of magnitude faster than using ant - which only compiled one file. With JavaFX (as well as android), netbeans just keeps forgeting to pick up changes so I almost always have to use shift-f11 (complete clean and rebuild) every time I run whatever i'm working on otherwise I get either the old code or runtime failure.
I'm using javafxpackager to create the final jar, and the makefile is only 30 lines long, and you know, at least a bit readable.
I hate to think of the days I alone waste every year because of this completely incompetent and utterly shit tool.
Oh my god, it's full of boggles.