You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Slawek Zachcial <sl...@yahoo.com> on 2003/01/15 01:17:58 UTC
[JJAR] 2nd attempt - a NICE-TO-HAVE list
Hi,
I had a deeper look at JJAR and also browsed this
mailing list. It looks like folks are interested in
JJAR, Geir has some stuff to commit, but nothing
happended in CVS for months now ...
Anyway, I think JJAR is a great and very usfull stuff,
even though, IMHO it misses some features (see WISH
LIST below).
Here is what I understood JJAR provides:
* XML-described repository - no need for server-side
components
* Packages can be defined by standalone descriptors
and then must be referenced by the central
repository XML (i.e. remotedefinition)
* JJAR Ant task and command line interface
* JJAR fetches always jars from the repository
* JJAR manages package dependencies
* JJAR Ant task creates Ant path element - useful to
define classpath
* JJAR is able to check jar version looking into its
Manifest file
* JJAR supports only versions like
<major>.<minor>-<modifier> - only exact matching is
supported
And here is a WISH LIST for JJAR - feel free to add
your stuff :-)))
* Richer version semantics for dependencies:
e.g. 1.2.3.4-dev, 1.2+ (greater or equal 1.2), 1.2*
(version prefix matches 1.2); an example could be a
package using JUnit's assertTrue introduced in 3.7 -
so it needs version "3.7+" - the latest available
in repository version could be the best feet.
For more details on that see Java WebStart JNLP file
syntax spec, Appendix A
* Dependencies on Java version:
Let's say some package (used by some package)* you
use depends on some 1.4+ functionality. When using
JJAR Ant task you could provide the target java
version and JJAR task would fail if the packages if
all dependencies are not compliant with your
required Java version
* More than one jar file in a package:
For example xdoclet ships a lot of plugins and they
cannot be repackaged in a single jar file as they
contain module descriptors having the same name and
being in the same place inside the jar file.
* Local repository only:
Let's say you store all your favorites jar files
in /opt/jar. If in addition you maintain the JJAR
repository descriptor, JJAR should be able to simply
reference files from this dir (e.g. JJAR Ant task
when constructing the path) - so no copying/fetching
is needed => only one copy of this jar in your
system.
* Ant FileSet:
JJAR Ant task already creates Ant's Path with all
the jars. I didn't figure any way to convert such a
Path to a FileSet. FileSet's would be useful when
you have to create a distribution - retrieving files
from JJAR (local) repository.
* Cache package descriptors locally:
This is something I found somebody proposed on this
list. Having that would enable you to work on a
deconnected system (no HTTP request needed) - your
laptop :-)
* Generate package descriptors from jar Manifest
files:
This could be just a small utility that would update
the repository descriptor using information like
Class-Path, Implementation-xxx, etc...
* Detect/handle dependency collisions:
Let's say two packages depend on the same library
but on two different versions, and you have to use
these two :-(. JJAR could detect that and try to
find the best feet (e.g. using the version semantics
described above).
* ... and some minor changes like:
- refactor JJAR and JJARTask
- add "package" JJARTask child element to be able to
get more than one package
- add log level to JJARTask log messages - make it
less verbose by default
And the final question I have - couldn't JJAR be used
by Maven to handle package dependencies??? I think
somebody already asked that question but I didn't see
any answer :-(
/Slawek
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>