You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Robert Buck <rb...@m-Qube.com> on 2006/11/22 03:57:01 UTC

newbie: cant get local and shared repository to work correctly

I want to create a public, shared, and local repository. The public
repository is all set up and works.
 
Hi,
 
I have been successful in using Ivy so far. But I want to configure
multiple resolvers so that:
 
1. the shared directory is located in the ${user.home}/.ivy/shared
directory
 
2. the shared directory always retains copies of all artifacts resolved
so that each of the multiple user owned sandboxes may share the third
party libraries resolved from the public repository
 
3. the local repository is located within the sandbox so that no other
sandbox may share its state
 
4. the local repository is where publications from sandbox modules go as
modules are built
 
So, the point to shared repository in this model is for one individual
to cache third party libraries, and to be able to resolve them from any
sandbox on demand. The shared repository is not shared between users;
users ought to be able to sterilize their shared repository to deal with
potential corruption, and enable testing of publications between
multiple sandboxes without impacting other users.
 
I have tried writing several versions of the ivyconf files, with no
success. 
 
Could someone provide some insight to help me?
 
Am I doing something wrong?
 
Or do I have a misconception of how Ivy works?
 
On the topic of terminology, what is a cache in Ivy? Is it distinct from
the shared and local repositories? How so? What is its purpose? I don't
understand why it exists at all.
 
Of note, no shared directory is ever created when files are resolved or
published. Here is an excerpt of how my Ivy is configured:
 
 
<?xml version="1.0"?>
<ivyconf>
  <conf defaultCache="${workspace.root}/ivy/cache"
defaultResolver="default-resolver"/>
  <property name="ivy.local.default.root"
value="${workspace.root}/ivy/local" override="true"/>
  <property name="ivy.local.default.ivy.pattern"
value="[organisation]/[module]/[revision]/[artifact].[ext]"
override="true"/>
  <property name="ivy.local.default.artifact.pattern"
value="[organisation]/[module]/[revision]/[type]s/[artifact]-[revision].
[ext]" override="true"/>
  <property name="ivy.shared.default.root"
value="${user.home}/.ivy/shared" override="true"/>
  <property name="ivy.shared.default.ivy.pattern"
value="[organisation]/[module]/[revision]/[artifact].[ext]"
override="true"/>
  <property name="ivy.shared.default.artifact.pattern"
value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]"
override="true"/>
  <resolvers>
    <filesystem name="local-resolver">
      <ivy
pattern="${ivy.local.default.root}/${ivy.local.default.ivy.pattern}"/>
      <artifact
pattern="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}
"/>
    </filesystem>
    <filesystem name="shared-resolver">
      <ivy
pattern="${ivy.shared.default.root}/${ivy.shared.default.ivy.pattern}"/>
      <artifact
pattern="${ivy.shared.default.root}/${ivy.shared.default.artifact.patter
n}"/>
    </filesystem>
    <url name="public-resolver">
      <ivy
pattern="http://localhost:20080/ivyrep/[organisation]/[module]/ivy-[revi
sion].xml"/>
      <artifact
pattern="http://localhost:20080/ivyrep/[organisation]/[module]/[revision
]/[artifact].[ext]"/>
      <artifact
pattern="http://localhost:20080/ivyrep/[organisation]/[module]/[revision
]/[artifact]-[revision].[ext]"/>
    </url>
    <chain name="default-resolver" returnFirst="true">
      <resolver ref="public-resolver"/>
      <resolver ref="shared-resolver"/>
      <resolver ref="local-resolver"/>
    </chain>
  </resolvers>
</ivyconf>