Gump and Maven IDs

About the ID structures

Here, I will refer to a an artifact as a single buildable entity - eg, a JAR.

In Maven, there are two identifiers for each artifact:

  • group ID - this is a globally unique identifier for your product (eg velocity, gump or maven)
  • artifact ID - this is an identifier unique within your group ID, for each artifact (eg velocity, velocity-utils)

In Gump, there are also two identifiers for each artifact:

  • project ID - this is a globally unique identifier for the SCM checkout and build to execute
  • JAR ID - for each artifact built by the project

There is also a module name, however this is not taken into consideration when identifying the artifact.

Known Issues

There are two issues at present in matching these concepts:

  1. the project ID naturally maps to artifact ID in maven, as Maven only generates one artifact per build descriptor. This is a mismatch losing the information in group ID from Maven and JAR ID from Gump 2. when artifact and project map one-to-one, they sometimes differ as they were created independantly in Gump and Maven.

To solve (2), the potential solutions are just to rename the projects in Maven, or rename them in Gump. It makes sense to do this in gump as most of the metadata is centralised in gumps CVS, and the gump project will see projects and be able to assist projects to update. Neither is possible in Maven: users would need to be educated to update their project descriptors. This is still a problem that will be taken on later as part of the ASF repository project.

To solve (1), one of the following can be done:

  • A policy in gump where project matches the definition of group ID. Maven projects would have to run a multiproject build, and each JAR listed with a JAR ID that matches artifact ID. While this requires no code changes, the problems with this are:
    • incompatible with some Maven builds
    • incompatible with existing gump descriptors
    • if a single JAR build fails, the whole project fails, potentially causing less of gump to execute
  • Code changes to gump to match the Maven ID scheme. The only one of the above problems present in this solution is that gump descriptors will possibly need updating.

Implementing the Changes in Gump

If this is done, this is a potential solution.

  1. Change module to match the group ID definition, and project to match the artifact ID definition. 2. When a build generates multiple JARs, each will be allocated a new artifact ID, rather than a JAR ID. 3. dependencies will then depend on just an artifact Id.

Mapping List

This section lists the known incompatibilies between Maven ang Gump IDs, and can be used as a resource to map them within your own project. See the Maven Gump Plugin documentation for more information.

If you know of any other incompatibilities, please add them to this list.

Maven

 

 

Gump

Group ID

Artifact ID

Project ID

Jar ID

avalon-framework

avalon-framework

avalon-framework-api

axis

axis

ws-axis

axis

bouncycastle

bcprov-jdk14

bcprov

jaf

activation

jaf

javamail

mail

javamail

jaxrpc

jaxrpc-api

ws-axis

axis-jaxrpc

jetty

jetty

jetty4

jstl

jstl

jakarta-taglibs-standard

log4j

log4j

logging-log4j

logkit

logkit

avalong-logkit

logkit

msv

isorelax

iso-relax

msv

relaxngDatatype

relaxng

ojb

ojb

db-ojb

oro

oro

jakarta-oro

regexp

regexp

jakarta-regexp

saaj

saaj-api

ws-axis

axis-saaj

servletapi

servletapi

jakarta-servletapi-5-servlet

swt

swt

eclipse

swt

velocity

velocity

jakarta-velocity

xerces

xerces

xml-xerces

...

...

...

...

  • No labels