Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

What is different for Maven in the Enterprise 

In my understanding Maven for Enterprise has a set of unique characteristics. Most of these characteristics are common sense options for almost all projects, but in the enterprise environment they sease being options and become requirements.

As a build platform, Maven is expected to deliver:

  • Speed
  • Reliability
  • Scalability
  • Documentation
  • Training
  • Support
  • Stable Community - this comes from being successful OSS project

Versioning support
A very interesting challenge is version maintance: if I have a thousand developers working on 500 projects - keeping versions in sync is a hustle. Some of it may be addressed by the release plugin, but that one is very limited in terms of project structure support. I think we are coming to a more fundmental requirement here: dependency graph manipulation tool, which supports:

  • snapshot creation operation: a project is being modified, it needs to be marked as a snapshot
  • snapshot promotion operation: project is approved into production - all dependents (not dependencies) should be modified as well
  • operations are SCM aware: we should be able to control whether operation should affect all (some?) active branches and non checked out dependents

Enterprise Development cycle
Maybe we should define a reference "enterprise software development cycle" and brainstorm how well Maven supports various aspects of it? Normally we always stopped at unit tests, completly ignoring QA/regression testing, saying: OK - it may happen behind the seen and then - by miracle - project is released; version may or may not change. Well - this is not going to fly if you try to sell it to a big company's software development management; first question will be: how does it support my real cycle?

Here is an attempt to define coarse cycle phases we can refine and generalize:

  • initiation: a new project is either created in or checked out of SCM
  • development - iterative process that includes unit and maybe integration testing
    • development includes remote builds when intermediate code is checked into SCM, built by a "build server" - Continuum and results shipped back to the developer
    • intermediate product maybe be deployed into QA environment and tested by developer(s) as part of development
  • QA deployment & acceptance
    • may result in firing a separate test battery: code coverage, PMD - etc.
  • QA - iterative process resulting in the next bullet.
  • Promotion - project is switched from snapshot to a version
  • Production deployment (release?)
  • Cycle repeats

I fully realize that this is an over simplified description, but we need to start with something and grow the meat.

  • No labels