﻿<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>


    <properties file="${ivy.settings.dir}/../local/local.properties" override="false"/>
    <properties file="${ivy.settings.dir}/common.properties" override="false"/>
    <classpath file="${ivy.settings.dir}/external_lib/ivysvnresolver-1.4-patched.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/svnkit-1.1.8.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/ssh2-build213.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/commons-httpclient-3.0.jar"/>

    <typedef name="svn" classname="fm.last.ivy.plugins.svnresolver.SvnResolver"/>
    <property name="ivy.local.default.root" value="${ivy.default.ivy.user.dir}/repository" override="false"/>
    <property name="ivy.xml.default.pattern" value="[organisation]/[module]/[revision]/ivy.xml" override="false"/>
    <property name="ivy.artifact.default.pattern" value="[organisation]/[module]/[revision]/[type]/[artifact].[ext]" override="false"/>

    <settings defaultResolver="external_modules" defaultLatestStrategy="internal_latest-revision"/>
    
    <caches useOrigin="true" resolutionCacheDir="${ivy.default.ivy.user.dir}/cache/resolution" defaultCacheDir="${ivy.default.ivy.user.dir}/cache/default">
        <cache name="local_ivy_repo-cache" basedir="${ivy.default.ivy.user.dir}/cache/local_ivy_repo"/>
        <cache name="local_maven2_repo-cache" basedir="${ivy.default.ivy.user.dir}/cache/local_maven2_repo"/>
        <cache name="remote_internal_module_repos-cache" basedir="${ivy.default.ivy.user.dir}/cache/remote_internal_module_repos"/>
        <cache name="remote_external_module_repos-cache" basedir="${ivy.default.ivy.user.dir}/cache/remote_external_module_repos"/>
    </caches>

    <latest-strategies>
        <latest-revision name="internal_latest-revision" usedefaultspecialmeanings="false">
        <specialMeaning name="M" value="-6"/>
        <specialMeaning name="pre" value="-5"/>
        <specialMeaning name="beta" value="-4"/>
        <specialMeaning name="alpha" value="-3"/>
        <specialMeaning name="RC" value="-2"/>
        <specialMeaning name="SNAPSHOT" value="-1"/>
        </latest-revision>
    </latest-strategies> 

    <!-- list of all resolvers in use-->
    <resolvers>
        <filesystem name="local_ivy" cache="local_ivy_repo-cache" local="true">
            <ivy pattern="${ivy.local.default.root}/${ivy.xml.default.pattern}" />
            <artifact pattern="${ivy.local.default.root}/${ivy.artifact.default.pattern}" />
        </filesystem>
        <filesystem name="local_maven2" cache="local_maven2_repo-cache" local="true" m2compatible="true">
            <ivy pattern="${maven.local.repo}/[organisation]/[module]/[revision]/[module]-[revision].pom" />
            <artifact pattern="${maven.local.repo}/[organisation]/[module]/[revision]/[artifact]-[revision]-[type].[ext]" />
            <artifact pattern="${maven.local.repo}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        </filesystem>
        <svn name="internal_ivy" username="${svn.username}" cache="remote_internal_module_repos-cache" userpassword="${svn.password}" repositoryURL="${svn.server.url}/bin">
            <ivy pattern="${svn.server.url}/bin/${ivy.xml.default.pattern}" />
            <artifact pattern="${svn.server.url}/bin/${ivy.artifact.default.pattern}" />
        </svn>
        <ibiblio name="internal_modules_maven2" cache="remote_internal_module_repos-cache" m2compatible="true" root="${maven.server}/repository/internal-repos" checksums=""/>
        <ibiblio name="external_modules_maven2" cache="remote_external_module_repos-cache" m2compatible="true" root="${maven.server}/repository/external-repos" checksums=""/>
        <svn name="internal_src_lib" username="${svn.username}" cache="remote_internal_module_repos-cache" userpassword="${svn.password}" repositoryURL="${svn.server.url}/src"  checksums="">
            <ivy pattern="${svn.server.url}/src/[module]/tags/[revision]/lib/[revision]/ivy.xml"/>
            <artifact pattern="${svn.server.url}/src/[module]/tags/[revision]/lib/[revision]/[artifact]_[type].[ext]"/>
        </svn>
    </resolvers>

    <!-- resolver chains -->
    <resolvers>
        <!-- remote repos containing internal modules -->
        <chain name="remote_internal_modules" returnFirst="true" cache="remote_internal_module_repos-cache">
            <resolver ref="internal_ivy"/>
            <resolver ref="internal_modules_maven2"/>
            <!-- fail back old style repo -->
            <resolver ref="internal_src_lib"/>
        </chain>

        <!-- remote repos containing external modules -->
        <chain name="remote_external_modules" returnFirst="true" cache="remote_external_module_repos-cache">
            <resolver ref="external_modules_maven2"/>
        </chain>

        <!-- local resolvers -->
        <chain name="local" returnFirst="false">
            <resolver ref="local_ivy"/>
            <resolver ref="local_maven2"/>
        </chain>

        <!-- repos containing internal artifacts -->
        <chain name="internal_modules" returnFirst="true" changingPattern=".*-SNAPSHOT">
            <!-- local repo first -->
            <resolver ref="local"/>
            <resolver ref="remote_internal_modules"/>
        </chain>

        <!-- repos containing external artifacts -->
        <chain name="external_modules" returnFirst="true" changingPattern=".*-SNAPSHOT">
            <!-- local repo first -->
            <resolver ref="local"/>
            <resolver ref="remote_external_modules"/>
        </chain>

    </resolvers>

    <modules>
        <module organisation="com.internal.*" name="*" resolver="internal_modules"/>
    </modules>

</ivysettings>
