Ok, I'm on board with specifying the exposed interfaces, but a few comments first to help my understanding.

On 06/06/2007, at 5:51 AM, Joakim Erdfelt wrote:

On maven 2, these can both be of model version 4.0.0 and it'll work.
On maven 1, these have to be model version 3.0.0 to work.

Oh if only the client could identify itself, then wouldn't be a problem. :-)

We've made a concious decision not to store both poms in the repository for a given artifact though, so this is the client's responsibility to deal with it.


The reason for the "/get/{implementation-id}/{layout-path}" is to clearly identify the intent of the client, and compensate/migrate/ regenerate/translate the requested resource for the client. It is clear, not overloaded.

As it stands now, the bidirectional layout has a tough time with maven 1 layout requests of non-typical artifact types (seen commonly in corporate environments). The lack of a 1::1 relationship between file extension and artifact type makes things even more difficult for "detection".

I'm not sure I understand why this would be given the type is in the path. I haven't looked at this code since it was refactored, but in repoclean and the subsequent converter there was admittedly quite a bit of trickery to handle many variants but it was centralised.


In short, I thoroughly dislike the idea of detecting the serving layer based on path information. I see it as a band-aide, a short term solution, one that will cause a mess of spaghetti code in the Repository servlet.

I can't see how that is the case if the complexity is isolated to the bidirectional layout.

Is this an issue for the converter now?


When we move to other artifact providing concepts, yum/apt/osgi, etc... there is tremendous overlap on the path structure, so much so that this detection route is just a dead-end to me.

This makes sense to me, though I would prefer better URLs and a decent default (see other thread).

I'm not overly excited about diving into all this for 1.0 though - the only requirements I'd see for 1.0 are that it can work with existing Maven 1 repository contents (ie, filesystem structure) and Maven 1 clients.

- Brett

Reply via email to