To summarise, there are three possible ways to encode
subprojects in URIs:

1. Status quo
   repository-uri = access-specifier "/" product-specifier "/"
                    version-specifier "/" artifact-specifier
   product-specifier = organisation "/" project

   . recommend that <organisation> is the reverse FQDN
   . for subprojects, <project> is the concatenation of project and
subproject
     names
   . tools can't determine project and suproject names from URI

  E.g:
    http://repo.apache.org/jakarta.apache.org/commons-lang

2. Introduce mandatory <subproject> path
   i.e, change product-specifier:

   product-specifier = organisation "/" project "/" subproject

   . recommend that <organisation> is the reverse FQDN
   . no need to concatenate project and subproject names
   . doesn't support subprojects nesting > 1
   . redundant directory for projects with no subprojects
   . tools can determine project and suproject names from URI

  E.g:
    http://repo.apache.org/org.apache.jakarta/commons/lang
    http://repo.apache.org/org.apache.xml/batik/batik

3. Change <product-specifier> so that it is opaque

   repository-uri = access-specifier "/" product-specifier "/"
                    version-specifier "/" artifact-specifier
   product-specifier = path_segments

   . recommend that <product-specifier> contains:
     . reverse FQDN
     . project name
     . subproject name(s)
   . can scale to arbitrary levels of subprojects
   . tools must parse URIs right to left, in order
     to separate version-specifier and product-specifier
   . tools must derive organisation, project, and subproject information
     from meta-data

  E.g:
    http://repo.apache.org/org/apache/jakarta/commons/lang
    http://repo.apache.org/org/apache/xml/batik

I'm beginning to prefer option 3.


-Tim



Reply via email to