Brett Porter wrote:
On 09/10/2007, at 4:30 PM, Joakim Erdfelt wrote:
I think you are missing the core point of the proposal.
(Is nicolas the only one that understands the difficulty?)
No, I get it. I've been there before, several times, remember :)
Using *just* the path information, how do you get from a maven 1
request to an artifact reference?
(groupId, artifactId, version, type)
ch.ethz.ganymed/jars/ganymed-ssh2-build210.jar
maven/jars/maven-test-plugin-1.8.2.jar
org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.1.jar
These are some examples of the problems that arise.
Using that magic regex that you mentioned (which we use in archiva
too!) we get a 1 to many split from path to reference.
(using "|" syntax for examples of references below
groupId|artifactId|version|type)
ch.ethz.ganymed/jars/ganymed-ssh2-build210.jar
becomes one of the following
ch.ethz.ganymed|ganymed|ssh2-build210|jar
ch.ethz.ganymed|ganymed-ssh2|build210|jar
exactly - that's why I suggested some special cases needed to be
listed (dom4j is a common one too).
The special case work can be accomplished with the proposal.
I don't like it, it screams *hack*, but if it'll get us closer to 1.0
then so be it.
maven/jars/maven-test-plugin-1.8.2.jar
becomes one of the following
maven|maven|test-plugin-1.8.2|jar
maven|maven-test-plugin|1.8.2|jar
seems like a bug, that should be deterministic through the filename
extension
How does the extension affect the breakdown of the version id?
The initial proposal was to eliminate this 1 to many problem by
reading the pom file for the information regarding the groupId /
artifactId / version, but that isn't a valid solution when working
with content that needs to be proxied.
Right, and it's not practical in general - so what is the current
status? The proposal is too complicated a solution - I would rather we
get it to work for 90% of the artifacts, special case the rest, and be
done with it. If we really, really find we need to have it 100%
deterministic with special cases, then I'd prefer we go back to adding
alternate views on the repository.
We don't have 90% coverage of m1/legacy repos.
When I run through a simple LegacyLayout.toArtifact(path) on the files
(paths only) present in the
http://people.apache.org/repo/m1-ibiblio-rsync-repository/ repository, i
get a ~40% failure rate.
I think I'll add that file listing to the unit tests today and make that
a unit test.
Must pass with <10% failure rate.
The reworking of the layout routines has allowed for greater flexibility
along with proper usage by the consumers.
But in either case, I think this can be in post-1.0. It's getting way
too late for changes of the magnitude you are proposing.
The magnitude isn't as large as you think, it's mostly done already.
Just wrapping up the unit testing today.
- Joakim