JJAR : Jakarta Jar Archive Repository ===================================== Since about the end of March, I have been thinking about how I wanted to make building easy for compoenent consumers, and make maintenance easy for developers. Some of the things I thought are important are : * minimal dependencies - shouldn't rely on any other jars to get things because one of the design goals is to help new users get started, to help avoid much of the easter-egg hunting that we require to get things going. * embeddable in applications : as just another API, it allows any app to embed the API in apps * ANT support : once the basic API is in place, it's just a wrapper :) * command line tool : to allow maintenance of a developers local repository as well as one-off 'go fetch' needs * etc So I have put together a basic repository version. It doesn't hope for the power of a CJAN - the whole CPAN-ish upload server, multiplexed mirrors, etc can come later. What it can do now : * command line tool can list the repository for all items or singles packages * command line tool can fetch packages by request, and supports dependency trees, fetching all dependencies connected to the requested package * command line tool can verify package and version information * ant task to do fetching Todo ---- - make 'modify classpath' flag work - what do we do about names for jars for ant? dependencies? - put -rr flag for 'remote repository' - add 'synch' verb to synch - maybe change language from 'local repo' to dest because The following is my scratchpad.... don't believe anything you read... 1) jjar : tool to test, get, fetch -p | --pgk : package, optionally package/ver -v | --ver : version -j | --jar : jar -c | --cp : classpath flag jjar mark -p package -v version -j jarfile - marks a jar with the package and version jjar verify [ -cp | -j jarfile] [-p package [-v version ]] [-flr ] - verifies that a jar is of the package and version - verifies that the package/ver is in the classpath - w/o parameters, lists all packages/ver - -flr : fetch into local repository if you don't have it jjar list [-p pkg [-v ver ]] [-r repository] - lists the packages or package info in a given repository or default jjar fetch [-c] [-jar ] [-rep ] package version - simply fetches the given package/ver from the repository (or default) and puts in jar or local rep and optionally adds to classpath jjar repadd -jar file -info file -r - adds a jar to the repository 2) Zero dependencies outside of the JDK To keep things simple, we want to keep JJAR at jdk 1.2 level (earlier?) and not depend upon any packages. This is critical as we want to be able to use JJAR as a boostrap utility to do things like fetch ant, for example. So no XML. 2) respository information - we want in a Properties format ...desc = string ...jar = ...href = string 3) version we want to regularize the versions : major number : integer minor number : integer version modifier : string .- 1.0 1.0-dev 1.0-rc1