![]() Quick, no waiting for XML parsing on the client side, no pages and pages of "Downloading XYZ." on your screen, just a simple status that updates you on compression progress and a single network interaction. Git makes a single request to a server, the server bundles up everything Git needs, compresses it and then sends down an entire repository. Let's look to Git as an inspiration for how Maven should work going forward. Maven (or Gradle or Ant or whatever your poison) should make a single request, passing in a collection of GAV coordinates and the repository should be able to calculate all of the dependency information sending back a compressed archive of everything a build would need. If the repository already has artifacts, metadata, and dependency information why not save some time. I'm both busy and impatient, and I can see a better way. Maybe it wasn't a problem years ago, but it is today. I'd like to put forward the idea that this is a problem with the design of the tool. It makes hundreds (if not thousands of requests) back to a repository. No really, Maven downloads MBs of dependencies from a repository, and it does so one-by-one pulling dependency metadata, POMs, and binaries down from a repository. What happens when a new programmer rolls up and runs the build for the first time? What happens every night when you clear a CI build's local repository? Maven downloads the Internet. Welcome to the reality of using Maven on a very large-scale project. Correction, the build takes forever every time you run it because it is just that big, and because you have the sort of environment that demands you always check for snapshot updates. and, the build takes forever the first time you run it. Your build spends most of the day juggling dependencies, both internal and external ![]() Whatever it is, there's a chance that you also work in the kind of environment that has a huge build with hundreds of dependencies that spans tens of thousands of lines of code. ![]() Maybe you have a more mature approach that splits up a very large project into several multi-module projects. Maybe you have one big project with multi-modules. I see several of these projects on a constant basis. Consider, for a moment, your big corporate project that you work with every day. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |