Pros:
- Dependency management. For several years already, my coworkers and I are not downloading and managing dependencies manually. This is a huge time saver.
- IDE-independence. It turns out, all major IDEs, Eclipse, IDEA and NetBeans how have decent support of Maven projects so our developers are not locked into one particular IDE.
- Command-line. With Maven, supporting simultaneous IDE and command-line configurations is straightforward which is good for continuous integration.
Cons:
- Have to invest into learning Maven. Well, have to do it. Good news, not everyone on the team has to learn.
- Documentation. Used to be a problem, now thanks to Sonatype and their book (http://www.sonatype.com/products/maven/documentation/book-defguide), the situation is much better.
- Rigidness. It is sometimes challenging and frustrating to do things the way you want. My advice would be not to fight and make Maven do things it does best, straightforward builds, or when there is a stable mojo available. In other cases, we drop out and do stuff either with Ant tasks (http://maven.apache.org/plugins/maven-antrun-plugin/) orexternal programs. My personal favorite is Groovy plugun (http://groovy.codehaus.org/GMaven).
Competition:
- Ant: doesn't have dependency management. Period.
- Ivy: still less mature than Maven (not that the latter doesn't have it's quirks, too). Almost the same feature set, so no compelling reason to move. I did several attempts to try it; all unsuccessful.
Bottom line: all of our projects are done with Maven for several years already.