I'll try and provide a tentative answer to my own question. Feel free to comment :-)

As far as I can tell Maven doesn't provide a specific mechanism for what I need. Ideally there would be a "variant" attribute that could be specified along the GAV parameters, to be inserted between the artifactId in and the version in the final name, but which would not be involved in version ordering (i.e. project-a-0.0.1 would not necessarily come before project-b-0.0.1). Such an attribute would allow keeping all variant information in the dependencyManagement sections of my parent POM's, which would be very nice.

As it is I have different options, possibly combined together: I could change the groupId for project variants, e.g. my.company.project.customer and/or add a "-customer" suffix to my artifactId.

I see no disadvantage in changing groupId's; on the contrary it would help organize things in my Nexus repository.

Changing artifactId's is certainly desirable in terms of traceability and to help avoid delivery mistakes. On the other hand, while Maven doesn't seem to require that a project directory be named as the artifactId, m2eclipse imports Maven projects into Ecplise by artifactId rather than by directory. I've yet to find out whether this may cause any problems.

Cheers,
Nicola Musatti

Nicola Musatti wrote:
Hallo,
I need advice on how to handle naming/versioning for artifacts built from separate branches of the same project, which evolve in parallel.

Our product has a main, "standard" development line, but customers usually ask for customizations that make it necessary to spin off separate variants.When this happens each variant starts to follow its own time-line, with its own release schedule.

From an SCM point of view - we use subversion - this translates to the standard product being developed on trunk while customer variants live in separate branches. Ideally the project's directory structure should be the same across variants, but resulting artifacts should be identifiable, e.g.:

project-x.y.z                    for the standard product
project-customer-m.n.o   for a customer variants

To further complicate things our product is actually made of several different Maven sub-projects and a customer variant is usually a combination of standard and customized sub-projects. We use an aggregator project to build the whole product. Different variants of this aggregator project combine the correct mix of standard and customized sub-projects.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to