Ivy flexibility (resolvers)

Ivy relies on resolvers and resolver chains to locate and retrieve artifacts. The possibility to define several types of repositories in chains, with different setups, makes artifact management really flexible.

The approach also eases the possibility to cooperate between groups in a decentralized manner. Exposing repositories to other groups with shared folders, web servers, ftp servers, etc.

Repositories and resolvers are configured in the ivy settings file, that within Arousa it is named conf/arousa-ivy-settings.xml.

The list of Ivy resolver types is quite extensive, including a ibiblio/maven type.

The following are ibiblio repository declarations that can be used to handle java jars.

<ibiblio name="ibiblio" m2compatible="true" />
<ibiblio name="jboss2" m2compatible="true" 
root="http://repository.jboss.com/maven2/" />

In many of our examples, like the bold experiments we have prepared a specific repository only for the test using a folder location.

<property name="demo.samples.repository.root" 
          value="C:/Users/jorges/ws/arousaws/arousa-examples/
                  repositories" override="false"/>
 <property name="demo-arousa-pattern"
	    value="[organisation]/[module]/[revision]/
                  [module]-[revision].[ext]"
	    override="true" />	
   <resolvers>    
    <chain name="demo">
      <filesystem name="arousa-demo" m2compatible="true" >
	<ivy pattern="${demo.samples.repository.root}/
                                      ${demo-arousa-pattern}"/>
	<artifact pattern="${demo.samples.repository.root}/
                                      ${demo-arousa-pattern}"/>
      </filesystem>
    </chain>
...

Another usual repository type is the http/url one. In the dual resolver example conf/arousa-ivy-settings.xml you can find the following url example.

<resolvers>
  <dual name="dual-example">
    <filesystem name="ivys">
      <ivy pattern="${dual-example-repository-path}/
                            [module]-ivy-[revision].xml"/>
     </filesystem>
     <url name="two-patterns-example">
	<artifact pattern="http://aiweb.cs.washington.edu/
                    research/projects/xmltk/xmldata/data/
                                [module]/[artifact].[ext]"/>
     </url>
   </dual>
</resolvers>