Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a question concerning the life cycle management of a/multiple project(s), more specific to the advantages/disadvantages of using technologies such as Maven.

Currently we work in a continuous-integration environment but lots of things still need to be manually performed (dependency management, deploying, setting up documentation, generating stats, ...). My impression is that this approach often leads to errors, miscommunications or things just are forgotten.

I know and have used Maven in the past but in smaller environments and I was always really enthusiastic about it. But I was wondering if someone could share some insights, experiences, pros, contras, ... about the use of Maven (or similar technology) in larger environments and for multiple projects.

I would like to use the suggestions made here to start the debate about moving to the next level in project management!

share|improve this question

2 Answers 2

up vote 6 down vote accepted

We use maven as our core build system on our huge enterprise system. It is worth its weight in gold. We use it to manage dependencies, both for third party libraries and internal modules, to package the application for deployment, to version the application, and generally to do everything else we don't feel like doing manually :-)

When coupled with something like Nexus, Maven is fantastic. Everyone's guaranteed to be working against the same dependencies, and the POM files are supported very well by IDEs such as Eclipse.

I couldn't go back to doing stuff without Maven; it's just too useful.

The only cons I can think of is that working with Maven means you have to think like Maven - your projects must be done the Maven way and you must show other non-maven devs how to make their projects in the maven way. It has a non-trivial learning curve.

share|improve this answer
    
Yes, running an internal Nexus server is probably essential for managing in-house libraries and releases. It's a fringe benefit, but I love how having Maven-based projects means we can forego the usual IDE religious arguments, and people can just use what they're comfortable with! –  RonU Mar 29 '12 at 15:10
    
Another option for having a corporate Maven repository is Apache Archiva. –  adrianboimvaser May 10 '13 at 18:09

If your application is tightly bound to something like an Apache Ant then you would need to do a lot of changes w.r.t. to the way you manage, build, deploy or even run test cases, though not necessarily all. With Maven you have a well defined life-cycle.

It is true that you would have to do things the way Maven asks you to do but there are sometimes ways around it (e.g overriding the standard project structure).

But once you have everything in place working with Maven, life would definitely be a lot simpler and manageable.

Maven comes with IDE support and many plugins so you can choose the plugins you need.

The only problem is the documentation. As it is still growing, it isn't the very best.

Hope this useful link helps. Maven, an Introduction and Comparison with Apache Ant.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.