The following is the intended content model for the metadata content repository: . `-- repositories/ `-- central/ |-- config/ | |-- name= | |-- storageUrl= | `-- uri= |-- content/ | `-- org/ | `-- apache/ | `-- archiva/ | `-- platform/ -- these are known as the namespace, of arbitrary depth. Equiv to groupId in Maven | `-- scanner/ -- this is the project - equivalent to artifactId in Maven | |-- 1.0-SNAPSHOT/ -- this is the version best used to describe the project ("marketed version") | | |-- scanner-1.0-20091120.012345-1.pom/ -- filename is a node, each is distinct except for checksums, etc. | | | |-- asc= | | | |-- created= | | | |-- maven:buildNumber= | | | |-- maven:packaging= | | | |-- maven:timestamp= | | | |-- md5= | | | |-- sha1= | | | |-- size= | | | |-- updated= | | | `-- version= -- the actual version of the file, 1.0-20091120.012345-1 | | |-- created= | | |-- description= | | |-- name= | | |-- organization.name= | | |-- organization.url= | | `-- updated= | |-- maven:artifactId= | `-- maven:groupId= `-- metadata/ (To update - run "tree --dirstfirst -F" on the unpacked content-model.zip from the sandbox) Notes: 1) Projects are just a single code project. They do not have subprojects - if such modeling needs to be done, then we can create a products tree that will map what "Archiva 1.0" contains from the other repositories. 2) There is not Maven-native information here, other than that in the maven: namespace. pom & other files are not treated as special - they are each stored and it is up to the reader to interpret 3) artifact data is not stored in the content repository (there is no data= property on the file). The information here is enough to locate the file in the original storageUrl when it is requested 4) The API will still use separate namespace and project identifiers (the namespace can be null if there isn't one). This is chosen to allow splitting the namespace on '.', and also allowing '.' in the project identifier without splitting 5) properties with '.' may be nested in other representations such as Java models or XML, if appropriate 6) we only keep one set of project information for a "version" - this differs from Maven's storage of one POM per snapshot. The Maven 2 module will take the latest. Those that need Maven's behaviour should retrieve the POM directly. Implementations are also free to store as much information as desired within the artifact node in addition to whatever is shared in the project version node.