Java Artifact Specifier

Version 0.3

Overview

This proposal extends the URI Syntax proposal: /URISyntax

The key aims of this proposal are to:

Relationship to other proposals

URI Components

An absolute repository URI is written as follows:

{{{ repository-uri = access-specifier "/" product-specifier "/"

For java projects, artifact-specifier is defined as:

{{{ artifact-specifier = java-artifact-specifier

Versioned artifact names

Java artifacts include the project version:

{{{ versioned-artifact-name = artifact-name "-" short-versiondebug

Artifacts can indicate that they include debugging information via the "-dbg" suffix.

E.g: {{{ ant-1.5.4.jar

Rationale

Artifacts in subdirectories

Each category of artifact in this proposal is required to be located in its own directory, e.g:   "jars/commons-cli-1.0.jar"  rather than in the root project version directory.

The alternative approach of placing each artifact in the root makes repository navigation harder, particularly for projects:

Inclusion of version in artifact names

Java and document artifacts require that the version be included in their names:

{{{ versioned-artifact-name = artifact-name "-" short-versiondebug

This ensures that it is immediately obvious to users what version of an artifact they are using, subsequent to its download.

The optional timestamp indicates interim builds, as per: /CommonBuildVersionSpecifier

It is assumed that MANIFEST.MF entries in artifacts will include the versioned artifact name.

Tool support

Tools can unambigously locate an artifact within a project version given the following criteria:

Example 1

Given: {{{ type = "jar"

The URI fragment would be:   "jars/commons-cli-1.1.jar" 

The associated MD5 and PGP artifacts would be: {{{ "jars/commons-cli-1.1.jar.md5"

Example 2

Given: {{{ type = "jar"

The URI fragment would be:   "jars/commons-cli-1.1-20031113.1043-dbg.jar" 

The associated MD5 and PGP artifacts would be: {{{ "jars/commons-cli-1.1-20031113.1043-dbg.jar.md5"

URI Examples

JARS

{{{ http://repo.apache.org/apache/ant/1.5.4/jars/ant-1.5.4.jar

Documentation

  http://repo.apache.org/apache/ant/1.5.4/docs/ant-1.5.4-javadoc.zip 

Project Example

The following URIs show the repository structure for version 1.5.4 of Ant, when this proposal is used in conjunction with the following proposals:

JARS

{{{ http://repo.apache.org/apache/ant/1.5.4/jars/ant-1.5.4.jar

Documentation

{{{ http://repo.apache.org/apache/ant/1.5.4/docs/ant-1.5.4-javadoc.zip

Binaries

{{{ http://repo.apache.org/apache/ant/1.5.4/binaries/ant-1.5.4-bin.zip

Source

{{{ http://repo.apache.org/apache/ant/1.5.4/source/ant-1.5.4-src.zip

Licenses

  http://repo.apache.org/apache/ant/1.5.4/license/LICENSE.txt 

PGP keys

  http://repo.apache.org/apache/ant/1.5.4/pgp/KEYS 

Appendix

Changes from 0.2

Changes from 0.1

ASFRepository/JavaArtifacts (last edited 2009-09-20 23:32:11 by localhost)