[erlang-questions] Turning rebar into a package manager

Alex Shneyderman <>
Fri Oct 19 15:37:01 CEST 2012

> On Fri, Oct 19, 2012 at 4:04 PM, Max Bourinov <> wrote:
>> Max,
>> Please follow this link: http://en.wikipedia.org/wiki/Apache_Maven
> It is not an answer. What good have _you_ found in Maven?  XML config
> as everything in Java?

At least java got strings correctly from day 1. Sorry, I have low
tolerance for sarcasm, especially un-substantiated. Maybe their notion
of concurrency is way off, but overall the language is not that bad.

Good maven:

1. build script that can build and produce a package. So, POM (a lot
of XML that you dislike so much is actually one of the best things
about maven, sorry).
2. centralized repository.
3. unified process. Makes it easy to start with mavenized projects.
4. transitive dependencies.

Bad points:

1. maven's use of snapshot dependencies - it makes builds
non-reproducible ("works on my machine" problem)
2. maven's use of plugins (the reason for this being a bad point is
actually exactly as point 1, since plugins are dependencies)
3. POM is too verbose. Maven's obsession with not using attributes on
the elements is quite annoying. Although if you use an IDE you rarely
have to see any XML.
4. centralized repository - maven's reliance on repository is at times
crippling (especially when you are in a hurry and internet link is
down). Some artifacts in the repository are simply incorrectly
defined, which makes dealing with maven builds a big PITA if you
happened to come across such an artifact.
5. Maven has limited number of scopes (scopes are needed to decide
which transitive dependencies are needed). This often makes it hard to
package products that have optional things enabled/disabled. Although,
this is can be partially mitigated by a plugin (forgot the name of it,
sorry). For example, ivy has pre-defined scopes and allows for custom

As you can see most of my good points are also bad points (or
partially bad), that is why I am avoiding maven like a plague. That is
not to say it is not a good product. Like with everything else you
learn its good and avoid the bad ones.


More information about the erlang-questions mailing list