HomeIndex > Spec Versioning

Single Version

A single version number is used for all specifications. When a release is made all specification jars are released together with the single version number.

Pros

  • Release process is simple and can be fully automated with the release plugin.
  • User only has to know one version number to get the most resent release.

Cons

  • New versions of the specification jars are created with each release even if the code has not changed.
  • User will end up with duplicate jars in local repository which is confusing and a waste of resources on the repository server and local system.
  • New specs appear with high version numbers.
  • An uncertified spec can hold up the release of tested and specifications.

Version Per Spec

Each specification has a separate version number and is released independently of other specification jars.

Pros

  • Each revision number for a specification contains code changes.
  • Users do not have to download new jar releases without code changes.
  • Specifications can be developed and released without having to release all other specs some of which may not be ready to release.

Cons

  • Releases are more difficult because the person performing the release must be aware of any dependencies and must also rerelease those jars. (eliminated with working version-ranges)
  • Duplicate jars are created when no code has changed which is a waste of resources on the repository server and local system. (eliminated with working version-ranges)
  • Users must be aware of the newest version number for the specification jars they are using. (eliminated with working version-ranges)

Supporting Facts

  • There are currently 26 specifications.
  • Version ranges don't work several (most?) important maven plugins
  • 11 of the specs have inner dependencies:
    ejb 2.1 -> jta 1.0.1b
    ejb3 -> jta 1.1, interceptor, annotation
    conector 1.5 -> jta 1.0.1b
    jacc -> servlet 2.4
    j2ee mgmt -> ejb 2.1
    javamail 1.3.1 -> activation
    javamail 1.4 -> activation
    jaxr -> activation
    jaxrpc -> saaj, qname, servlet 2.4
    jsp -> servlet 2.4
    saaj -> activation
  • Only 5 of the 11 specs will change often due to inner dependencies:
    javamail 1.3.1 -> activation
    javamail 1.4 -> activation
    jaxr -> activation
    jaxrpc -> saaj, qname, servlet 2.4
    saaj -> activation
  • Several specification have not had code changes in 2+ years:
    ejb
    servlet
    jms
    transaction
    connector
    qname