Feature Comparisons

This is a workspace for doing feature comparisons with other products. If you'd like to adjust or add a product here, please comment on the page.

Maven

Each of Maven's features needs to be compared against different products as it encompasses a number of pieces of functionality. It's also worth noting that some of these tools could be integrated into Maven via plugins.

Build Tools

Should compare Ant, Maven 1.x, Maven 2.x, make

Dependency Management

  Maven 2.x Maven 2.x Ant Tasks Ivy Maven 1.x
Transitive dependencies
Dependency ranges bounded, unbounded, multiple ranges " up to next major version (2.0+)
Version comparison defined order (eg 0.10 > 0.9), pluggable version syntax planned, falls back to string comparison " defined order (eg 0.10 > 0.9), pluggable version syntax planned, falls back to string comparison
Conflict Resolution nearest, latest-time (snapshots), fixed. planned: newest (latest-revision), oldest, fail " all, latest-time, latest-revision, fixed
Snapshots configurable timestamping, build numbering, update frequency " can publish continuous integration build auto-updated timestamped build
Profiles pluggable activators, as well as by id, jdk, OS, sys property for whole build process including deps no manual activation single id configuration (must be defined consistently across all ivy configurations)
Scope defines known scopes for sensible build defaults, combined during transitivity " can use configurations in a limited way for this
Non-java dependencies pluggable "
Filtering can exclude dependencies from tree, apply a version globally when using POM can exclude dependencies from tree, apply a version globally N/A
Multiproject order determined by dependencies, and build outputs can be used as the dependencies (even if not built to a jar) ordering and reuse of build artifacts as dependencies
System scoped (tools.jar) can be used transitively jar overrides
Dependency reports currently basic tabulated report multi-page tabulated report
Eclipse plugin in progress Mevenide
IDEA plugin in progress Mevenide
NetBeans plugin in progress Mevenide
Eclipse .classpath generation
IDEA .iml generation
NetBeans project generation
Deployment pluggable: file, scp, scpexe, http, ftp, sftp, scm " file only. planned: vfs based file, scp, scpexe, ftp, sftp
Mirrors can use mirror for any repository, automatic mirroring planned planned
Maven 1.x Repository (non-transitive)
Maven 2.x Repository (transitive)
Ivyrep (transitive)
Multiple repository support separate snapshot and release repository, per project repository " per project repository can list multiple repositories from build
Configurable repository layout
  Maven 1.x Repository Maven 2.x Repository Ivyrep
Size 8000+ 8000+ 30
Immediate Synchronize of OSS Releases
Artifacts
User uploads to central repository
Open sandbox repository

Site Management

  Maven 2.x Maven 1.x Anakia
Plain text input
XDoc input
Docbook input
XHTML input
FAQ input
Confluence input in progress
XHTML output
PDF output planned
Reporting integration
Streaming
Skinnable Velocity JSL
Furniture customisation
Breadcrumbs

Other

Continuum

See Continuous Integration Server Feature Matrix

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Nov 16, 2005

    Xavier Hanin says:

    A very detailed comparison, interesting to see. But the few corrections/details...

    A very detailed comparison, interesting to see.

    But the few corrections/details about ivy where finally too long to be posted as a comment, so they can finally be found on my weblog: http://jroller.com/comments/xavierhanin?anchor=maven_features_comparison

  2. Nov 16, 2005

    Brett Porter says:

    Incorporated all these changes.

    Incorporated all these changes.

  3. Jul 08, 2009

    Gilles Scokart says:

    The comparaison is rather old, but still mostly valid, except about the scope : ...

    The comparaison is rather old, but still mostly valid, except about the scope : Ivy has a very flexible way to define scopes (called configurations).  You can define yourself the transitvity, whe scope that includes each other, etc.  You can define compile, runtime, test scope, or any kind of scope you can imagine.

    Also, Ivyrep doesn't exist anymore.