This is not our version, its the version of the spec.

Its still a version number in an artifactId... regardless of who's version it is.

The problem with this is that when you go to change versions you have to go update a bunch of poms to fix their artifactId instead of simply updating one dependency in a dependencyManagement section.

Because we put version numbers in artifactIds we've given ourselves a lot more maintenance work when it comes time to rev specs and because of this we have made it far to easy to missing them and get modules out of sync.


IIRC we had a big discussion about the best spec naming convention and decided this was it.

So because of that its not something that can be changed? I really disagree with this practice. It really only make *more* maintenance work and increases the chances of something getting out of sync. Its far to easy to end up with several different versions of the same spec in a project because the normal maven version resolution can't figure out which one to use because of the version information encoded in artifact ids.


Despite our best intentions, we often end up releasing corrections to spec jars we've published. Can you suggest a different naming convention that will clearly and unambiguously show both the spec version and the geronimo version of a spec jar? Or do you think one of these is unnecessary?

I think that all relevant information can be encoded in the artifacts version. And I think that the geronimo version is mostly irrelevant, its basically a revision of the sun version, so I would just put a counter on the end of the sun version:

  <specVersion>-<geroniomRev>

  1.0-1

This helps do away with inconsistencies which we have now, with picking 1.1 or 2.0 or 1.0m2 or whatever... just keep incrementing the revision when there are changes.

Some real examples:

<current> ---> <suggest> (w/o version in artifactId):
geronimo-j2ee-management_1.1_spec-1.0-M1.jar -> geronimo-j2ee- management-spec-1.1-1.jar geronimo-j2ee-management_1.0_spec-1.0.jar -> geronimo-j2ee-management- spec-1.0-1.jar geronimo-j2ee-management_1.0_spec-1.0.1.jar -> geronimo-j2ee- management-spec-1.0-2.jar geronimo-j2ee-management_1.0_spec-1.1.jar -> geronimo-j2ee-management- spec-1.0-3.jar

As you can probably tell, I think this is a very good practice. I hate it when someone says they depend on "servlet.jar" and I have to open the spec jar up and try to figure out if whoever generated it bothered to include any information at all about which spec version they implemented.

Well, lucky for you w/maven the version information is encoded in the jar file names by default. So its quite easy to just use the "version" of an artifact to contain all of the versioning details and you will end up with an artifact with that information in the filename.

--jason

Reply via email to