I was wondering if you had any suggestions for improving our build process. We were previously using Ant w/o Ivy, but after a recent refactor, I think that there has got to be a better way.
We recently split our webapp into a few different modules. We now have module core,uploader, and webapp. Module uploader depends on module core. Module webapp depends on module uploader and module core. All of these modules are still in active development, so I need to be able to quickly recompile and deploy module webapp along with any changes made in module core and/or uploader.
Right after the refactor, the process was rebuild module core jar w/dependencies. Copy module core jar to module uploader & module webapp. Rebuild module uploader jar w/dependencies and copy to module webapp. Build webapp WAR and redeploy.
This was terribly slow, so it was changed. The ant build file in module webapp will compile each module (core, uploader, webapp) as well as copy the libs from each module and package it all up into a WAR.
I would like to start using a dependency manager as well. What would be the best way to build the WAR for easy development of all 3 modules? Would ant + ivy be advised or should I move to maven or gradle? I don't think we are attached to ant since we don't have a complicated build script at this point.
If you were using Maven, you'd have a parent project with 3 subprojects (one for each of your modules.) When you build the parent project, it figures out the dependencies and builds in the same order. And each subproject build sees what has already been compiled and only compiles what is new.
It would be more work to do in Ant. And since you are already using dependency management, I think it is time for you to migrate to Maven.