This gets to the heart of why we moved our build over to rake recently (file-based dependencies over tasks): http://bost.ocks.org/mike/make/
2 plus ones
Shared publicly•View activity
- I do think the functional model is vastly superior to the task model. The only downside to make is that it doesn't manage external dependencies, although I guess one could have a rule like this:
wget http://repository/foo_lib.jarFeb 24, 2013
- We use a very Googlesqe model and check in jars at particular versions. An early build step merges all dependencies into one big deps.jar and everything is smooth sailing from there. When it comes to grabbing dependencies to check in, I will often use the maven repository and its associated meta-data to populate our deps directory but day to day, external dependencies are rarely a concern. It probably helps that I'm trying to recover from Google-induced NIH ... and still pass on some libraries that (in my opinion) are rats nest of dependencies.Feb 24, 2013
- Sounds like our MagicJar tool in a way. I recently found out the awesomeness of MagicJar. As you know, the Blaze plugins are IntelliJ and Eclipse are productivity destroyers. MagicJar allows the IDE to manage gigantic dependency trees by only putting the few sources you are tracking in your source path, it then builds a giant sharded deps.jar that contains the dependencies. The IDE's settings panel then looks relatively clean. One source root ("java/") one test root ("tests"), and one deps jar with everything. IntelliJ responsiveness went way up, and you can launch unit tests without invoking blaze. :)Feb 24, 2013
- Ray, that's exactly what it looks like in Eclipse for me. Soooo much better.Feb 24, 2013
- I tried MagicJar a while back but it didn't quite provide enough source files for my liking. It's worth giving it another shot.Feb 24, 2013
- For external dependencies, I good approach is to use a separate tool for the job. A little script that downloads what you needs and verifies all the checksums.
You can also check in the jars, but it's not friendly to Git. Checking in a script with URLs and checksums works really well with Git. The URLs can point to some internal site, possibly on an svn repository.Feb 25, 2013
Add a comment...