Having hashed through all this, I think at the moment we can keep the creation of new types which are dependency-only types for the secondary artifacts, but leave ourselves open to a derivative tag if we find it unworkable. See below for history.
—
My suggestion that still seems to satisfy all requirements is:
- make type only be primary artifact types, and dependency.type = pom.type
- add derivative to the dependency element. Valid derivatives are defined by the artifact handler
- allow the artifact handler to generate any of its derivatives as controlled by properties to that plugin
- unique identifier for a project remains groupId:artifactId:type
- filename for a derivative is /groupId/types/artifactId-derivative-version.type by default where derivative is optional.
- artifact handlers can define custom repo filename mappers to change the filename as necessary. The only use fo this I see is to change the extension: so maybe the artifact handler just defines an extension instead.
—
Original:
Firstly, we must be able to customise the artifact name in the repository, in the filename. David and Emmanuel have demonstrated this clearly in emails today. ie ejbs should be built to /ejbs/foo-1.0.jar and /ejbs/foo-1.0-client.jar. the jars directory is for jars that are not special, not for wars, ejbs, etc.
...