Hi,

At 04:35  12/4/01 -0700, Nael Mohammad wrote:
>Can you elaborate on CJAN?

It was an idea originally brought up by Jon to implement a system similar
to CPAN but for java not perl. So you would basically have a global
repository where you could download binary snapshots (ie .jar/.war/.ear
files) of products. 

Associated with each product has a list of jars each with a name (and
optionally a flavour) and a version. So you could have
turbine-debug-1.2.3.jar, avalon-4.5.6.jar, log4j-7.8.jar etc

When doing a build you can choose to update your local jars so that the
required versions are stored in a system wide, workspace wide or project
wide repository.

For instance in the Avalon projects I currently have a temporary hack till
CJAN arrives that installs the jars into a location specified by cjan.home.
So I set cjan.home in "${user.home}/.ant.properties". The binaries are
installed into systemwide /opt/apps/cjan in my case and other projects
directly reference it from there.

When full CJAN comes about the system will look something like this

<target name="cjan-update">
  
  <cjan-get category="xml/parser" name="xerces" version="1.2"/>

</target>

This will first check your local repositories for appropriate jar. In my
case it would check the following locations

/opt/apps/cjan/xml/parser/xerces-1.2[.*].jar
/opt/Repositories/avalon/lib/xml/parser/xerces-1.2[.*].jar
/opt/Repositories/avalon/jakarta-avalon/lib/xml/parser/xerces-1.2[.*].jar

(or you could elide category directories - xml/parser - if it looked better).

It would detect that I don't have xerces around with correct version and
download the appropriate jar from CJAN repository

ie http://www.cjan.org/directory/xml/parser/xerces-1.2[.*].jar

It would then install it into a local system specific place dependening on
permissions and settings. I would choose for it to be installed at
workspace level - namely

/opt/Repositories/avalon/lib/xml/parser/xerces-1.2[.*].jar

It would then set the property xerces.jar to the location of the jar. 

A bit further on you go 

<classpath id="project.class.path">
  <pathelement location="${xerces.jar}" />
  ...
</classpath>

Subsequent runs would not need to download jar but instead could use this
one directly.

This would allow each project to depend on particular versions, be easy for
end user and remove need for binaries in CVS. 
Cheers,

Pete

*------------------------------------------------------*
| "Computers are useless. They can only give you       |
|            answers." - Pablo Picasso                 |
*------------------------------------------------------*

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to