This eliminates the use of shelljs.exec's sync mode, which is the source of the filehandle leaks that can cause EMFILE on OSX, and are CPU-intensive everywhere. Tested locally, needs poking before it gets released.
No need to do it during every check_reqs. This also extracts the jar building into a helper function.