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:
- 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.
- 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 |
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 |
|
... |
... |
... |
... |